多数更新
Overview
UpdateMany()
: 複数のドキュメントの 1 つ以上のフィールドを更新します。UpdateManyAsync()
:UpdateMany()
の非同期バージョン。
次のセクションでは、これらの方法について詳しく説明します。
注意
メソッドのオーバーロード
このページのメソッドの多くには、複数のオーバーロードがあります。 The examples in this ガイド show only one definition of each method. For more information about the available overloads, see the API documentation.
サンプル データ
このガイドの例では、 sample_restaurants
データベースのrestaurants
コレクションを使用します。 このコレクションのドキュメントでは、次のRestaurant
、 Address
、 GradeEntry
クラスをモデルとして使用します。
public class Restaurant { public ObjectId Id { get; set; } public string Name { get; set; } [ ] public string RestaurantId { get; set; } public string Cuisine { get; set; } public Address Address { get; set; } public string Borough { get; set; } public List<GradeEntry> Grades { get; set; } }
public class Address { public string Building { get; set; } [ ] public double[] Coordinates { get; set; } public string Street { get; set; } [ ] public string ZipCode { get; set; } }
public class GradeEntry { public DateTime Date { get; set; } public string Grade { get; set; } public float? Score { get; set; } }
注意
restaurants
コレクションのドキュメントは、スニペット ケースの命名規則を使用します。このガイドの例では、ConventionPack
を使用してコレクション内のフィールドをパスカル ケースに逆シリアル化し、Restaurant
クラスのプロパティにマップします。
カスタム直列化について詳しくは、「 カスタム直列化 」を参照してください。
このコレクションは、Atlas が提供するサンプル データセットから構成されています。 MongoDB クラスターを無料で作成して、このサンプル データをロードする方法については、クイック スタートを参照してください。
メソッドとパラメーター
UpdateMany()
メソッドと UpdateManyAsync()
メソッドは次のパラメータを受け入れます。
Parameter | 説明 |
---|---|
| データ型: FilterDefinition |
| |
| 任意。 An インスタンス of the データ型: UpdateOptions |
| 任意。操作をキャンセルするために使用できるトークン。 データ型: |
複数の値の更新
The UpdateMany()
and UpdateManyAsync()
methods each accept only one UpdateDefinition
オブジェクト.次のセクションでは、1 回のメソッド呼び出しで複数の値をアップデートする方法について説明します。
更新の定義を組み合わせた
Builders.Update.Combine()
メソッドを使用すると、複数の UpdateDefinition
オブジェクトを組み合わせることができます。このメソッドは次のパラメーターを受け入れます:
Parameter | 説明 |
---|---|
| 組み合わせる更新定義の配列。 データ型: |
var filter = Builders<Restaurant>.Filter .Eq("cuisine", "Pizza"); var combinedUpdate = Builders<Restaurant>.Update.Combine( Builders<Restaurant>.Update.Set("cuisine", "French"), Builders<Restaurant>.Update.Unset("borough") ); _restaurantsCollection.UpdateMany(filter, combinedUpdate);
var filter = Builders<Restaurant>.Filter .Eq("cuisine", "Pizza"); var combinedUpdate = Builders<Restaurant>.Update.Combine( Builders<Restaurant>.Update.Set("cuisine", "French"), Builders<Restaurant>.Update.Unset("borough") ); await _restaurantsCollection.UpdateManyAsync(filter, combinedUpdate);
更新パイプライン
To create an update パイプライン, call the Builders.Update.Pipeline()
method.このメソッドは次のパラメーターを受け入れます:
Parameter | 説明 |
---|---|
| データ型: |
var filter = Builders<Restaurant>.Filter .Eq("cuisine", "Pizza"); var updatePipeline = Builders<Restaurant>.Update.Pipeline( PipelineDefinition<Restaurant, Restaurant>.Create( new BsonDocument("$set", new BsonDocument("cuisine", "French")), new BsonDocument("$unset", "borough") ) ); _restaurantsCollection.UpdateMany(filter, updatePipeline);
var filter = Builders<Restaurant>.Filter .Eq("cuisine", "Pizza"); var updatePipeline = Builders<Restaurant>.Update.Pipeline( PipelineDefinition<Restaurant, Restaurant>.Create( new BsonDocument("$set", new BsonDocument("cuisine", "French")), new BsonDocument("$unset", "borough") ) ); await _restaurantsCollection.UpdateManyAsync(filter, updatePipeline);
注意
サポートされていない操作
設定オプション
プロパティ | 説明 |
---|---|
| |
| データ型: |
| データ型: 照合 |
| データ型: BsonValue |
| データ型: BsonValue |
| データ型: |
| データ型: BsonDocument |
戻り値
プロパティ | 説明 |
---|---|
| アップデート操作が MongoDB によって確認されたかどうかを示します。 データ型: |
|
データ型: |
| データ型: |
| データ型: |
| ドライバーがアップサートを実行した場合、データベースでアップサートされたドキュメントのID。 データ型: BsonValue |
詳細情報
このページには、 UpdateManyAsync()
メソッドを使用してデータを変更する方法を示す短いインタラクティブ ラボが含まれています。 MongoDB やコード エディターをインストールしなくても、ブラウザ ウィンドウでこのラボを直接完了できます。
ラボを開始するには、ページ上部の [ Open Interactive Tutorialボタンをクリックします。 ラボを全画面形式に展開するには、ラボ ペインの右上隅にある全画面ボタン( ⛶ )をクリックします。
更新操作の実行可能な例については、「 多数のドキュメントの更新 」ページを参照してください。
クエリフィルターの作成の詳細については、「クエリの指定」ガイドを参照してください。
API ドキュメント
このガイドで説明したメソッドやタイプの詳細については、次の API ドキュメントを参照してください。