如何更新Mongo DB中的字段?

时间:2017-05-19 13:45:30

标签: php mongodb mongoose

我有这样的文件:

{
    "_id" : ObjectId("591ed2f0470e6ccc143c986e"),
    "name" : "Planets",
    "prototype_id" : null,
    "parameters" : [
        "591eefe3470e6cd70c3c9872",
        "591eefc3470e6c500f3c9872",
        "591eedbe470e6cd70c3c9871"
    ],
    "available" : "1"
}

如果此数组中存在值[],我尝试为字段parameters设置591eefe3470e6cd70c3c9872

我试过了:

$new = array('$set' => array("parameters" => []));

$this->collection->update(array("parameters" => "591eedbe470e6cd70c3c9871"), $new);

它不起作用......

1 个答案:

答案 0 :(得分:1)

MongoDB的update()和save()方法用于将文档更新到集合中。 update()方法更新现有文档中的值,而save()方法用save()方法中传递的文档替换现有文档。

MongoDB Update()方法

update()方法更新现有文档中的值。

<强>语法

update()方法的基本语法如下 -

  

db.COLLECTION_NAME.update(SELECTION_CRITERIA,UPDATED_DATA)

考虑mycol集合具有以下数据

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"My Overview"}

以下示例将设置新标题&#39; New MongoDB Tutorial&#39;标题为&#39; MongoDB概述&#39;。

的文件
db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}})
db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"My Overview"}

默认情况下,MongoDB只会更新单个文档。要更新多个文档,您需要设置一个参数&#39; multi&#39;为真。

db.mycol.update({'title':'MongoDB Overview'},
   {$set:{'title':'New MongoDB Tutorial'}},{multi:true})