我在mongo中有这个文件:
{
"_id": ObjectId("4d0b9c7a8b012fe287547157"),
"done_by": ["1"]
}
Run Code Online (Sandbox Code Playgroud)
我想在"done_by"字段中添加另一个值,所以我的预期文档将是::
{
"_id": ObjectId("4d0b9c7a8b012fe287547157"),
"done_by": ["1","2","3"]
}
Run Code Online (Sandbox Code Playgroud)
我试试这个:
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));
Run Code Online (Sandbox Code Playgroud)
但没有任何反应,任何人都知道如何做到这一点?
Jus*_*ins 41
既然这些答案都没有告诉你这里有什么问题......
$conn = new Mongo();
$q = $conn->server->gameQueue;
$id = new MongoId("4d0b9c7a8b012fe287547157");
$q->update(array("_id"=>$id),array('$push' => array("done_by","2")));
Run Code Online (Sandbox Code Playgroud)
你的$ push语句有问题,你没有推送值为"2"的"done_by"你实际发送的是"done_by" 和 "2"......
这是问题......
array('$push' => array("done_by","2"))
Run Code Online (Sandbox Code Playgroud)
这应该有一个=>不是,
array('$push' => array("done_by" => "2"))
Run Code Online (Sandbox Code Playgroud)
但是请注意,每次运行它都会插入另一个"2",如果你想让MongoDB只插入"2",如果它在"done_by"中不存在那么你应该使用$ addToSet ...
array('$addToSet' => array("done_by" => "2"))
Run Code Online (Sandbox Code Playgroud)
此声明不会每次都添加2,而只是第一次.
| 归档时间: |
|
| 查看次数: |
24006 次 |
| 最近记录: |