更新コマンドのより優れた、より単純な基準を作成しようとしています。しかし、検索するキャンペーンを持つすべてのユーザーを取得する方法がわかりません。
"data" : "a name",
"campaigns" : [
{ "id" : ObjectId("4ff3f07eacf4794426000154"), "name" : "test" },
{ "id" : ObjectId("4ff3f07eacf4794426000154"), "name" : "fisk test2" }
]
私がやりたいのは、「テスト」をおそらく「OS 2012」に更新することです。
これを行うには、次のようなものを使用することを考えました。
db.users.update({"campaigns.name": "test"}, {$set : {campaigns: {'test' : 'OS 2012'}}});
その更新ステートメントの問題は、ユーザーがその配列に持っている他のキャンペーンをおそらく削除することですか? 「test」を「test2」に更新したいだけで、今すぐ見つけられる最善の方法は、最初に $pull を使用し、次に $addToSet を使用することです。
より良い方法はありますか?例を見せてもらえますか?
アドバイスとより良い知恵をありがとう。