我正在使用这个php libarary http://mongodb.github.io/mongo-php-library/
我有一个收集帖子,在我的一个文档中我添加了多条评论,我可以添加这样的新评论
$collection = (new MongoDB\Client)->project->posts;
$id = '5799a81fa60afa2010001838';
$result = $collection->updateOne(
["_id" => new MongoDB\BSON\ObjectID($id)],
['$push' => [
"comments" => ['id'=>1,'name' => 'sohss','comm'=>'I like it']
]
]
);
现在如何更新我尝试过的任何具体评论,但没有成功
$updateResult = $collection->updateOne(
['_id' => new MongoDB\BSON\ObjectID($id),'comments'],
['$set' =>
['comments'=>[0]=>
['name'=>'123']
]
]
);
更新子文档的正确语法是什么。
该文件的结构如下:
{
"_id" : ObjectId("5799a81fa60afa2010001838"),
"title" : "test",
"comments" : [
{
"id" : 3,
"name" : "soh",
"comm" : "I like it"
},
{
"id" : 1,
"name" : "sohss",
"comm" : "I like it"
}
]
}
答案 0 :(得分:0)
我们需要使用$ positional运算符来更新子文档中的特定字段,例如,如果我想更新id 3的子文档中的名称,我们可以这样做
$updateResult = $collection->updateOne(
['_id' => new MongoDB\BSON\ObjectID($id),'comments.id'=>3],
['$set' =>
['comments.$.name'=> 'Sohail anwar'
]
]
);