我想将所有消息标记为“吉姆”已读。这是一个线程的结构:
db.threads.save({
messages: [
{
read_by: ['bob', 'jim']
},
{
read_by: ['bob']
},
{
read_by: ['bob']
}
]
})
如您所见,“jim”已经阅读了一条消息,其余的只有“bob”阅读。我想查找并修改任何嵌入的文档,以便将“jim”附加到read_by
数组中。
这是我得到的地方:
db.threads.findAndModify({
query: {
'messages.read_by': {
$ne: 'jim'
}
},
update: {
$push: {
'messages.$.read_by': 'jim'
}
}
})
我收到此错误:
未捕获的异常:findAndModifyFailed 失败:“无法使用字符串字段名称 [$] 附加到数组”
该查询适用于 a所以我猜问题出在调用db.threads.find()
的更新部分。findAndModify()