使用节点在MongoDB中进行子文档更新
我有这样的collections结构。
application_data: { name : A, site : B, location : [ { key1 : value1, key2 : value2}, { key3 : value3, key4 : value4} ] }
现在我想添加一个另外的数组到“位置”作为一个子文档,这样我的位置就变成了
location : [ { key1 : value1, key2 : value2}, { key3 : value3, key4 : value4, key5 :[{subkey1:subvalue1, subkey2:subvalue2}]} ]
我尝试$push
& $addToSet
这并没有帮助我。 有人可以帮我吗? 如果你使用nodejs解释一个例子很有帮助。
你真正要做的是将新的字段添加到现有的子文档中。 你可以使用$ set和位置操作符$来完成它:
db.applications.update({ name: 'A', // querying for parent document 'location.key3': 'value3' // querying for an exact subdocument to add new field to }, { $set: { 'location.$.key5': [{ subkey1: 'subvalue1', subkey2: 'subvalue2' }] } })
您可以使用$ push或$ addToSet实现相同的结果,如果要将多个子文档添加到'location.key5'
,效果会更好:
db.applications.update({ name: 'A', 'location.key3': 'value3' }, { $push: { 'location.$.key5': { subkey1: 'subvalue1', subkey2: 'subvalue2' } } })
要么
db.applications.update({ name: 'A', 'location.key3': 'value3' }, { $addToSet: { 'location.$.key5': { subkey1: 'subvalue1', subkey2: 'subvalue2' } } })
有关更多信息,请参阅更新数组中的文档 。