MongoDB:使用字典更新数组中的文档

时间:2012-08-08 18:54:19

标签: node.js mongodb

我发现StackOverflow Question非常接近回答我的问题,但并不完全存在。

采用这个原始问题(修改数组中的文档),但假设您没有要进行的特定更改。相反,我有一个我希望改变的词典。这是一个例子:

原始文件

{
    _id: something,
    recipients: [{id:1, name:"Andrey", isread:false}, {id:2, name:"John", isread:false}]
}

要做出的更改

{
    isread: true,
    fullname: 'jonathan'
}

如何将此更改词典应用于John(id:2)? 如果它是相关的,我正在使用MongoDB-Node.JS Driver 谢谢

1 个答案:

答案 0 :(得分:3)

就像您引用的问题一样,您需要使用$ positional operator,但在这种情况下使用update

collection.update({_id:something, 'recipients.id': 2}, {$set: {'recipients.$': {
    isread: true,
    fullname: 'jonathan'
}}}, function (err) {...

修改

要不替换整个数组元素对象,您必须执行以下操作:

collection.update({_id:something, 'recipients.id': 2}, {$set: {
    'recipients.$.isread': true,
    'recipients.$.fullname': 'jonathan'
}}, function (err) {...