1

我发现一个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 驱动程序 谢谢

4

1 回答 1

3

就像您引用的问题一样,您需要使用$ 位置运算符,但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) {...
于 2012-08-08T19:05:24.753 回答