我想將所有消息標記爲由'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