MongoDB:用字典更新数组中的文档
我发现一个StackOverflow问题非常接近回答我的问题,但不是那里。
采取这个原始的问题(修改一个数组中的文档),但假设你没有你想要做的具体的改变。 相反,我有一本我想要做的改变的字典。 这里是一个例子:
原始文件
{ _id: something, recipients: [{id:1, name:"Andrey", isread:false}, {id:2, name:"John", isread:false}] }
要做的改变
{ isread: true, fullname: 'jonathan' }
我怎样才能应用这个改变字典的约翰(id:2)? Incase是相关的,我正在使用MongoDB-Node.JS驱动程序谢谢
就像在你引用的问题中一样,你需要使用$
positions操作符 ,但是在这种情况下update
:
collection.update({_id:something, 'recipients.id': 2}, {$set: {'recipients.$': { isread: true, fullname: 'jonathan' }}}, function (err) {...
编辑
为了不replace整个数组元素对象,你必须这样做:
collection.update({_id:something, 'recipients.id': 2}, {$set: { 'recipients.$.isread': true, 'recipients.$.fullname': 'jonathan' }}, function (err) {...