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) {...