我有一个包含此架构文档的集合:
{
_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
}
我做错了什么?
答案 0 :(得分:7)
尝试使用这样的$ set:
db.messages.findAndModify({query:{'recipients.id':2}, update:{$set:{'recipients.$.isread':true}}})