2011-12-25 8 views
5

私は、コレクション内のすべての既存文書の単一要素を更新する目的で、次のクエリを実行しています。私は基本的にその価値を "0"にクリアしようとしています。ここでMongoDBコレクション内のすべての文書の要素を更新する

はコードです:

MongoCollection collection = db.GetCollection(DataAccessConfiguration.Settings.CollectionName); 
var query = Query.Exists("ElementName", true); 
var update = Update.Set("ElementName", "0"); 
collection.Update(query, update); 

これは、単一のドキュメントを更新します。

すべての要素を一度に更新するにはどうすればよいですか?

答えて

6

MongoDBの更新は、デフォルトで0または1のドキュメントに影響します(クエリ指定子が何も一致しない場合のみ0)。すべてのドキュメントを更新するには、UpdateFlags.Multiを第3引数Updateとして渡す必要があります。 Updateの4引数バージョンもあり、これは第4引数として「セーフモード」フラグを受け入れます。

(安全モードでは、​​コマンドをアップデートに同梱し、書き込みが成功したことをサーバが確認するまで、ドライバを待機させます)セーフモードには、複数のサーバからの確認応答を待つさまざまなオプションがありますレプリカセットは、特定の時間だけ待ってからエラーを返します)。

APIの詳細については、see the C# driver documentationも必ずご覧ください。

+0

正確に私が必要としたもの。私は 'UpdateFlags.Multi'引数が欠けていました。 – agarcian

関連する問題