我有这样的文件:
{
"_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 :(得分: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})