2017-05-19 51 views
0

我有文件是这样的:如何更新MongoDB中的字段?

{ 
    "_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); 

它不工作...

+0

对不起,我不需要删除所有,我需要从阵列 – Blablacar

+1

拔出这个元素你们是不是要设置数组为[]当查询发现输入元素的数组?或试图从数组中拉出匹配的?像'$ this-> collection-> update(array(),array('$ pull'=> array(“parameters”=>“591eedbe470e6cd70c3c9871”));' – Veeram

回答

1

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

MongoDB的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"} 

以下示例将设置标题为“MongoDB Overview”的文档的新标题“New MongoDB Tutorial”。

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将只更新单个文档。要更新多个文档,您需要将参数'multi'设置为true。

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