MongoDB:更新数组中的文档

时间:2011-06-23 20:44:13

标签: mongodb

我有一个包含此架构文档的集合:

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

现在,我想使用findAndModify()为John(id = 2)更新“isread”,因为我还需要获取原始文档。

我正在尝试这个命令:

db.messages.findAndModify({query:{'recipients.id':2}, update:{'recipients.$.isread':true}})

但它做了什么,它只是用“收件人。$ .isread”替换整个“收件人”字段,所以文档现在看起来像:

{
    _id: someid,
    'recipients.$.isread':true
}

我做错了什么?

1 个答案:

答案 0 :(得分:7)

尝试使用这样的$ set:

db.messages.findAndModify({query:{'recipients.id':2}, update:{$set:{'recipients.$.isread':true}}})