最近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には参加していないので、私はコメント付きでブログシステムを作りたいと思っています。私は彼のコメントの隣にすべてのユーザーのアバターを見せたいと思います。どのように私のスキーマを構造化すべきですか? –
概念的には、ユーザー=>アバターマップをどこかに保存する必要があります。各ユーザーのアバターをユーザー文書(ユーザーコレクション内)に保存することもできますし、特定のブログエントリのコメント作成者用のユーザー=>アバターマップをブログエントリのドキュメントのフィールドに保存することもできます。 MongoDBでの正規化の軽度の扱いについてはhttp://docs.mongodb.org/manual/applications/database-references/、http://docs.mongodb.org/manual/use-cases/storing-comments/を参照してください。 "ユーザーのコメント"ユースケース分析。 –
ええ、あなたの答えを見た直前に解決策を見つけました。とにかく@Jasonさん、ありがとう。 –