2016-10-03 57 views
1

考虑这样一个文件:如何仅在MongoDB文档字段存在时才更新它们?

{ 
    "_id": "PmjoDDjKPHZSKzbGB", 
    "name": "Foo", 
    "parent": null, 
} 

我想更新一些与此对象的字段:

data = { 
    "name": "Bar", 
    "nonExistingField": "moon", 
    "otherNonExistingField": "sun" 
} 

如何使用update()data对象更新蒙戈文件无插入nonExistingFieldotherNonExistingField

+0

如果这些字段不存在,文档是否应该更新? –

+0

然后更新不会执行任何操作。所以我并不在乎。 – dagatsoin

回答

0
db.collection.update(
{"_id": "PmjoDDjKPHZSKzbGB","fieldToBeUpdated":{$exists:true}}, 
{$set: {"fieldToBeUpdated":date} 
); 

过滤器文档检查对应于_id的相等条件。另外,如果'fieldToBeUpdated'存在,它只会提取文档。

更新文档将该字段等同于声明的JSON对象。