我最近开始使用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。 –