如何使用新的PHP驱动程序库

时间:2016-08-02 06:00:23

标签: mongodb mongodb-php

我正在使用这个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"
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

我们需要使用$ positional运算符来更新子文档中的特定字段,例如,如果我想更新id 3的子文档中的名称,我们可以这样做

$updateResult = $collection->updateOne(
                ['_id' => new MongoDB\BSON\ObjectID($id),'comments.id'=>3],
                ['$set' =>  
                            ['comments.$.name'=> 'Sohail anwar'

                            ]
                ]
            );