我发现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 谢谢
答案 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) {...