我最近開始使用MongoDB,並且有關於更新文檔中數組的問題。 我得到的結構是這樣的:MongoDB更新數組的多個記錄
{
"_id" : ObjectId(),
"post" : "",
"comments" : [
{
"user" : "test",
"avatar" : "/static/avatars/asd.jpg",
"text" : "....."
}
{
"user" : "test",
"avatar" : "/static/avatars/asd.jpg",
"text" : "....."
}
{
"user" : "test",
"avatar" : "/static/avatars/asd.jpg",
"text" : "....."
}
...
]
}
我試圖執行以下查詢:
update({"comments.user":"test"},{$set:{"comments.$.avatar": "new_avatar.jpg"}},false,true)
的問題是其更新的所有文件,但它僅更新在每一個第一個數組元素文件。有沒有辦法更新所有數組元素,或者我應該嘗試手動執行它? 謝謝。
感謝您的回答。那麼因爲mongo沒有加入,我想用博客系統評論,我想在他的評論旁邊顯示每個用戶頭像。任何建議我應該如何構建我的模式? –
從概念上講,你需要在某處存儲一個user => avatar map。您可以將每個用戶的頭像存儲在用戶文檔中(在您的用戶集合中),或者,您可以爲給定博客條目的評論者在該博客條目的文檔字段中存儲用戶=>頭像地圖。請參閱http://docs.mongodb.org/manual/applications/database-references/,瞭解MongoDB中規範化的輕量化處理,以及http://docs.mongodb.org/manual/use-cases/storing-comments/ for一個「用戶評論」用例分析。 –
是的,我在看到你的答案之前就想出瞭解決方案。無論如何非常感謝你@Jason。 –