我想将所有消息标记为由'jim'读取。这里是一个线程的结构:
db.threads.save({
messages: [
{
read_by: ['bob', 'jim']
},
{
read_by: ['bob']
},
{
read_by: ['bob']
}
]
})
正如你所看到的,一个消息已经被“吉姆”,剩下的只有通过“鲍勃”读。我想找到并修改任何嵌入式文档,以便'012'附加到read_by
阵列。
这里就是我的了:
db.threads.findAndModify({
query: {
'messages.read_by': {
$ne: 'jim'
}
},
update: {
$push: {
'messages.$.read_by': 'jim'
}
}
})
我得到这个错误:
uncaught exception: findAndModifyFailed failed: "can't append to array using string field name [$]"
的查询工作与db.threads.find()
,所以我想这个问题是与findAndModify()
呼叫的更新部分。
试试这个,...... 更新:{$ 推:{ 'messages.read_by': '吉姆' } } ...作为read_by数组中的元素,你可以直接访问它。 – axierjhtjz 2013-03-14 11:39:49
是的,这不起作用。看起来你无法$ push到嵌入式文档数组。 – DrPheltRight 2013-03-14 12:20:53