Overview
このガイドでは、一括書込み操作を使用して、1 つのデータベース呼び出しで複数の書込み操作を実行する方法を学習できます。
ドキュメントを挿入し、複数の他のドキュメントを更新してから、ドキュメント を削除するシナリオを考えてみましょう。 個々のメソッドを使用する場合、各操作には独自のデータベース呼び出しが必要です。
一括書き込み操作 を使用すると、より少ないデータベース呼び出しで複数の書き込み操作を実行できます。 次のレベルで一括書き込み操作を実行できます。
コレクション :
IMongoCollection.BulkWrite()メソッドまたはIMongoCollection.BulkWriteAsync()メソッドを使用して、単一のコレクションに対して一括書込み操作を実行できます。これらのメソッドは、書き込み操作の各タイプに対してデータベースを呼び出します。例、 メソッドは 1 回の呼び出しで複数のアップデート操作を実行しますが、 挿入操作と 置換操作 のためにデータベースに対して 2 回個別の呼び出しを行います。クライアント :アプリケーションがMongoDB Serverバージョン 8.0 以降に接続している場合は、
IMongoClient.BulkWrite()メソッドまたはIMongoClient.BulkWriteAsync()メソッドを使用して、同じクラスター内の複数のコレクションとデータベースに対して一括書込み操作を実行できます。このメソッドは、1 回のデータベース呼び出しですべての書き込み操作を実行します。
サンプル データ
このガイドの例では、Atlasサンプルデータセットの sample_restaurants.restaurants コレクションと sample_mflix.movies コレクションを使用します。MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 MongoDBを使い始めるガイド を参照してください 。
Tip
POCO を使用した一括書き込み操作
このガイドの例では、すべてのジェネリック クラスの TDocument 型の BsonDocument 型を使用します。これらのクラスには Plain Old CLR Object(POCO) を使用することもできます。 そのためには、コレクション内のドキュメントを表すクラスを定義する必要があります。 クラスには、ドキュメント内のフィールドと一致するプロパティが必要です。 詳しくは、「 POCO 」を参照してください。
コレクションの一括書込み (write)
一括書き込み操作には、1 つ以上の書き込み操作が含まれます。実行する書込み操作ごとに、次のいずれかの WriteModel<TDocument> クラスのインスタンスを作成します。
DeleteManyModel<TDocument>DeleteOneModel<TDocument>InsertOneModel<TDocument>ReplaceOneModel<TDocument>UpdateManyModel<TDocument>UpdateOneModel<TDocument>
以下のセクションでは、前述のクラスのインスタンスを作成し、使用して、対応する書込み操作を一括書込み操作で実行する方法を示します。「 一括操作の実行 」セクションでは、モデルのリストを BulkWrite() または BulkWriteAsync() メソッドに渡して一括操作を実行する方法が説明されています。
挿入操作
挿入操作を実行するには、 InsertOneModel<TDocument>インスタンスを作成し、挿入するドキュメントを指定します。
次の例では、InsertOneModel<BsonDocument>クラスのインスタンスを作成しています。このインスタンスは、"name"フィールドが "Mongo's Deli" であるドキュメントを restaurantsコレクションに挿入するようにドライバーに指示します。
var insertOneModel = new InsertOneModel<BsonDocument>( new BsonDocument{ { "name", "Mongo's Deli" }, { "cuisine", "Sandwiches" }, { "borough", "Manhattan" }, { "restaurant_id", "1234" } } );
複数のドキュメントを挿入するには、ドキュメントごとにInsertOneModel<TDocument>のインスタンスを作成します。
重要
重複キー エラー
一括操作を実行する場合、 InsertOneModel<TDocument>はコレクション内にすでに存在する_idを含むドキュメントを挿入できません。 この状況では、ドライバーはMongoBulkWriteExceptionをスローします。
アップデート操作
単一のドキュメントを更新するには、UpdateOneModel<TDocument> のインスタンスを作成し、次の引数を渡します。
コレクション内のドキュメントをマッチングするために使用される基準を指定する クエリフィルター 。クエリの指定の詳細については、 MongoDB Serverマニュアルのクエリ演算子とプロジェクション 演算子を参照してください。
実行する更新を説明する更新ドキュメント。更新を指定する方法の詳細については、 MongoDB Serverマニュアルの更新演算子を参照してください。
UpdateOneModel<TDocument>インスタンスは、クエリフィルターに一致する最初のドキュメントの更新を指定します。
次の コード例では、UpdateOneModel<BsonDocument>オブジェクトは restaurantsコレクションの更新操作を表しています。この操作は、nameフィールドの値が "Mongo's Deli" であるコレクション内の最初のドキュメントと一致します。次に、一致したドキュメントの cuisineフィールドの値を "Sandwiches and Salads" にアップデートします。
var updateOneModel = new UpdateOneModel<BsonDocument>( Builders<BsonDocument>.Filter.Eq("name", "Mongo's Deli"), Builders<BsonDocument>.Update.Set("cuisine", "Sandwiches and Salads") );
複数のドキュメントを更新するには、 UpdateManyModel<TDocument>のインスタンスを作成し、 UpdateOneModel<TDocument>と同じ引数を渡します。 UpdateManyModel<TDocument>クラスは、クエリフィルターに一致するすべてのドキュメントのアップデートを指定します。
次の コード例では、UpdateManyModel<BsonDocument>オブジェクトは restaurantsコレクションの更新操作を表しています。この操作は、nameフィールドの値が "Mongo's Deli" であるコレクション内のすべてのドキュメントと一致します。次に、cuisineフィールドの値を "Sandwiches and Salads" にアップデートします。
var updateManyModel = new UpdateManyModel<BsonDocument>( Builders<BsonDocument>.Filter.Eq("name", "Mongo's Deli"), Builders<BsonDocument>.Update.Set("cuisine", "Sandwiches and Salads") );
置換操作
置換操作により、指定されたドキュメントのすべてのフィールドと値が削除され、指定した新しいフィールドと値に置き換えられます。 置換操作を実行するには、 ReplaceOneModel<TDocument>のインスタンスを作成し、クエリフィルターと、一致するドキュメントを置き換えるフィールドと値を渡します。
次の例では、ReplaceOneModel<BsonDocument>オブジェクトは restaurantsコレクションに対する置換操作を表しています。この操作は、restaurant_idフィールドの値が "1234" であるコレクション内のドキュメントと一致します。次に、このドキュメントから _id 以外のすべてのフィールドを削除し、name 、cuisine 、borough 、restaurant_id フィールドに新しい値を設定します。
var replaceOneModel = new ReplaceOneModel<BsonDocument>( Builders<BsonDocument>.Filter.Eq("restaurant_id", "1234"), new BsonDocument{ { "name", "Mongo's Pizza" }, { "cuisine", "Pizza" }, { "borough", "Brooklyn" }, { "restaurant_id", "5678" } } );
複数のドキュメントを置き換えるには、ドキュメントごとにReplaceOneModel<TDocument>のインスタンスを作成する必要があります。
削除操作
ドキュメントを削除するには、 DeleteOneModel<TDocument>のインスタンスを作成し、削除するドキュメントを指定するクエリフィルターを渡します。 DeleteOneModel<TDocument>インスタンスには、クエリフィルターに一致する最初のドキュメントのみを削除するための手順が記載されています。
次のコード例では、DeleteOneModel<BsonDocument>オブジェクトは restaurantsコレクションの削除操作を表しています。この操作は、restaurant_idフィールドの値が "5678" である最初のドキュメントを一致させ、削除します。
var deleteOneModel = new DeleteOneModel<BsonDocument>( Builders<BsonDocument>.Filter.Eq("restaurant_id", "5678") );
複数のドキュメントを削除するには、DeleteManyModel<TDocument> のインスタンスを作成し、削除するドキュメントを指定してクエリフィルターを渡します。DeleteManyModel<TDocument> のインスタンスには、 クエリフィルターに一致するすべてのドキュメントを削除するための手順が表示されます。
次のコード例では、DeleteManyModel<BsonDocument>オブジェクトは restaurantsコレクションの削除操作を表しています。この操作は、nameフィールドの値が "Mongo's Deli" であるすべてのドキュメントを照合して削除します。
var deleteManyModel = new DeleteManyModel<BsonDocument>( Builders<BsonDocument>.Filter.Eq("name", "Mongo's Deli") );
一括操作の実行
実行する操作ごとに WriteModelインスタンスを定義したら、IEnumerable インターフェースを実装するクラスのインスタンスを作成します。この IEnumerable に WriteModel オブジェクトを追加し、IEnumerable を BulkWrite() または BulkWriteAsync() メソッドに渡します。デフォルトでは 、これらのメソッドはリストで定義されている順序で操作を実行します。
Tip
IEnumerable
Array と List は、IEnumerable インターフェースを実装する 2 つの一般的なクラスです。
同期 BulkWrite() メソッドと非同期 BulkWriteAsync() メソッドを使用して、restaurantsコレクションで一括書込み操作を実行する方法を表示するには、次のタブから を選択します。
var models = new List<WriteModel<BsonDocument>> { new InsertOneModel<BsonDocument>( new BsonDocument{ { "name", "Mongo's Deli" }, { "cuisine", "Sandwiches" }, { "borough", "Manhattan" }, { "restaurant_id", "1234" } } ), new InsertOneModel<BsonDocument>( new BsonDocument{ { "name", "Mongo's Deli" }, { "cuisine", "Sandwiches" }, { "borough", "Brooklyn" }, { "restaurant_id", "5678" } } ), new UpdateManyModel<BsonDocument>( Builders<BsonDocument>.Filter.Eq("name", "Mongo's Deli"), Builders<BsonDocument>.Update.Set("cuisine", "Sandwiches and Salads") ), new DeleteOneModel<BsonDocument>( Builders<BsonDocument>.Filter.Eq("restaurant_id", "1234") ) }; var results = collection.BulkWrite(models); Console.WriteLine(results);
var models = new List<WriteModel<BsonDocument>> { new InsertOneModel<BsonDocument>( new BsonDocument{ { "name", "Mongo's Deli" }, { "cuisine", "Sandwiches" }, { "borough", "Manhattan" }, { "restaurant_id", "1234" } } ), new InsertOneModel<BsonDocument>( new BsonDocument{ { "name", "Mongo's Deli" }, { "cuisine", "Sandwiches" }, { "borough", "Brooklyn" }, { "restaurant_id", "5678" } } ), new UpdateManyModel<BsonDocument>( Builders<BsonDocument>.Filter.Eq("name", "Mongo's Deli"), Builders<BsonDocument>.Update.Set("cuisine", "Sandwiches and Salads") ), new DeleteOneModel<BsonDocument>( Builders<BsonDocument>.Filter.Eq("restaurant_id", "1234") ) }; var results = await collection.BulkWriteAsync(models); Console.WriteLine(results);
上記のコード例では、次の出力が生成されます。
MongoDB.Driver.BulkWriteResult1+Acknowledged[MongoDB.Bson.BsonDocument]
注意
ドライバーが一括操作を実行する場合、ターゲット コレクションの書込み保証 (write concern) が使用されます。 ドライバーは、実行順序に関係なく、すべての操作を試行した後にすべての書込み保証 (write concern) エラーを報告します。
一括書き込み操作をカスタマイズする
BulkWrite() または BulkWriteAsync() メソッドを呼び出すと、BulkWriteOptionsクラスのインスタンスを渡すことができます。BulkWriteOptionsクラスには、 一括書込み操作を構成するために使用できるオプションを表す次のプロパティが含まれています。
プロパティ | 説明 |
|---|---|
| 操作がドキュメントレベルの検証をバイパスするかどうかを指定します。詳細については、 MongoDB Serverマニュアルの「 スキーマバリデーション 」を参照してください。デフォルトは |
| |
|
|
| パラメータ名と値のマップ( |
次のコード例では、BulkWriteOptionsオブジェクトを使用して順序なしの一括書込み操作を実行しています。
戻り値
BulkWrite() メソッドと BulkWriteAsync() メソッドは、次のプロパティを含む BulkWriteResultオブジェクトを返します。
プロパティ | 説明 |
|---|---|
| サーバーが一括書き込み操作を確認したかどうかを示します。このプロパティの値が |
| 削除されたドキュメントの数(存在する場合)。 |
| 挿入されたドキュメントの数(存在する場合)。 |
| アップデートに一致したドキュメントの数(該当する場合)。 |
| 変更されたドキュメントの数(存在する場合)。 |
| 変更されたカウントが利用可能かどうかを示します。 |
| アップサート操作を引き起こした各リクエストに関する情報を含むリスト。 |
| 一括操作内のリクエストの数。 |
例外の処理
一括書き込み操作のいずれかの操作が失敗した場合、 .NET/ C#ドライバーは BulkWriteError をスローし、それ以上の操作を実行しません。
BulkWriteErrorオブジェクトには、エラーを発生させたリクエストのインデックスを記述する Indexプロパティが含まれています。
クライアント一括書込み (write)
MongoDB Server 8.0 以降を実行中配置に接続する場合、IMongoClient.BulkWrite() メソッドまたは IMongoClient.BulkWriteAsync() メソッドを使用して、同じクラスター内の複数のデータベースとコレクションに書込むことができます。これらのメソッドは、1 回の呼び出しですべての書き込み操作を実行します。
実行する書込み操作ごとに、次のいずれかの BulkWriteModel クラスのインスタンスを作成します。
BulkWriteInsertOneModel<TDocument>BulkWriteUpdateOneModel<TDocument>BulkWriteUpdateManyModel<TDocument>BulkWriteReplaceOneModel<TDocument>BulkWriteDeleteOneModel<TDocument>BulkWriteDeleteManyModel<TDocument>
以下のセクションでは、前述のクラスのインスタンスを作成し、使用して、対応する書込み操作を一括書込みで実行する方法を示します。「 一括操作の実行 」セクションでは、モデルのリストを BulkWrite() または BulkWriteAsync() メソッドに渡して一括操作を実行する方法が説明されています。
挿入操作
挿入操作を実行するには、 BulkWriteInsertOneModel<TDocument>クラスのインスタンスを作成します。BulkWriteInsertOneModel<TDocument> コンストラクターは次のパラメーターを受け入れます。
Parameter | 説明 |
|---|---|
| BSONドキュメントを挿入するデータベースとコレクション。データ型: |
|
|
次の例では、BulkWriteInsertOneModel<TDocument>クラスのインスタンスを作成しています。これらの インスタンスは、sample_restaurants.restaurants コレクションと sample_mflix.movies コレクションにドキュメントを挿入するようにドライバーに指示します。
var restaurantToInsert = new BulkWriteInsertOneModel<BsonDocument>( "sample_restaurants.restaurants", new BsonDocument{ { "name", "Mongo's Deli" }, { "cuisine", "Sandwiches" }, { "borough", "Manhattan" }, { "restaurant_id", "1234" } } ); var movieToInsert = new BulkWriteInsertOneModel<BsonDocument>( "sample_mflix.movies", new BsonDocument{ { "title", "Silly Days" }, { "year", 2022 } } );
アップデート操作
単一のドキュメントを更新するには、BulkWriteUpdateOneModel<TDocument>クラスのインスタンスを作成します。BulkWriteUpdateOneModel<TDocument> コンストラクターは次のパラメーターを受け入れます。
Parameter | 説明 |
|---|---|
| BSONドキュメントを挿入するデータベースとコレクション。データ型: |
| コレクション内のドキュメントを照合するために使用される基準を指定するクエリフィルター。 |
| 実行する更新操作。更新操作の詳細については、 MongoDB Serverマニュアルの「 フィールド更新演算子 |
| 任意。結果をソートするときに使用する言語照合。詳細については、このページの「 照合 |
| 任意。ドキュメントをスキャンするために使用するインデックス。詳細については、 MongoDB Server |
| 任意。クエリフィルターに一致するドキュメントがない場合は、更新操作でアップサート操作を実行するかどうかを指定します。詳細については、 MongoDB Server |
| 配列フィールドのアップデート操作でどの配列要素を変更するかを指定します。詳細については、 MongoDB Server のマニュアルを参照してください。データ型: |
次のコード例では、BulkWriteUpdateOneModel<BsonDocument> オブジェクトは sample_restaurants.restaurants コレクションと sample_mflix.movies コレクションの更新操作を表します。
var restaurantUpdate = new BulkWriteUpdateOneModel<BsonDocument>( "sample_restaurants.restaurants", Builders<BsonDocument>.Filter.Eq("name", "Mongo's Deli"), Builders<BsonDocument>.Update.Set("cuisine", "Sandwiches and Salads") ); var movieUpdate = new BulkWriteUpdateOneModel<BsonDocument>( "sample_mflix.movies", Builders<BsonDocument>.Filter.Eq("title", "Carrie"), Builders<BsonDocument>.Update.Set("seen", True) );
複数のドキュメントを更新するには、BulkWriteUpdateManyModel<TDocument>クラスのインスタンスを作成します。このクラスのコンストラクターは、BulkWriteUpdateOneModel<TDocument> コンストラクターと同じパラメーターを受け入れます。BulkWriteUpdateManyModel<TDocument>操作は、クエリフィルターに一致するすべてのドキュメントを更新します。
次の コード例では、BulkWriteUpdateManyModel<BsonDocument>オブジェクトは sample_restaurants.restaurantsコレクションの更新操作を表しています。この操作は、nameフィールドの値が "Starbucks" であるコレクション内のすべてのドキュメントと一致します。次に、cuisineフィールドの値を "Coffee (Chain)" にアップデートします。
var updateManyModel = new BulkWriteUpdateManyModel<BsonDocument>( "sample_restaurants.restaurants", Builders<BsonDocument>.Filter.Eq("name", "Starbucks"), Builders<BsonDocument>.Update.Set("cuisine", "Coffee (Chain)") );
置換操作
ドキュメント内のフィールドを置き換えるには、BulkWriteReplaceOneModel<TDocument>クラスのインスタンスを作成します。BulkWriteReplaceOneModel<TDocument> コンストラクターは次のパラメーターを受け入れます。
Parameter | 説明 |
|---|---|
| BSONドキュメントを挿入するデータベースとコレクション。データ型: |
| コレクション内のドキュメントを照合するために使用される基準を指定するクエリフィルター。 |
|
|
| 任意。結果をソートするときに使用する言語照合。詳細については、このページの「 照合 |
| 任意。ドキュメントをスキャンするために使用するインデックス。詳細については、 MongoDB Server |
| 任意。クエリフィルターに一致するドキュメントがない場合は、更新操作でアップサート操作を実行するかどうかを指定します。詳細については、 MongoDB Server |
次の例では、BulkWriteReplaceOneModel<BsonDocument> オブジェクトは sample_restaurants.restaurants コレクションと sample_mflix.movies コレクションに対する置換操作を表します。
var restaurantReplacement = new BulkWriteReplaceOneModel<BsonDocument>( "sample_restaurants.restaurants", Builders<BsonDocument>.Filter.Eq("restaurant_id", "1234"), new BsonDocument{ { "name", "Mongo's Pizza" }, { "cuisine", "Pizza" }, { "borough", "Brooklyn" }, { "restaurant_id", "5678" } } ); var movieReplacement = new BulkWriteReplaceOneModel<BsonDocument>( "sample_mflix.movies", Builders<BsonDocument>.Filter.Eq("title", "Insomnia"), new BsonDocument{ { "name", "Loving Sylvie" }, { "year", 1999 } } );
削除操作
ドキュメントを削除するには、BulkWriteDeleteOneModel<TDocument>クラスのインスタンスを作成します。BulkWriteDeleteOneModel<TDocument> コンストラクターは次のパラメーターを受け入れます。
Parameter | 説明 |
|---|---|
| BSONドキュメントを挿入するデータベースとコレクション。データ型: |
|
|
| 任意。結果をソートするときに使用する言語照合。詳細については、このページの「 照合 |
| 任意。ドキュメントをスキャンするために使用するインデックス。詳細については、 MongoDB Server |
次のコード例では、BulkWriteDeleteOneModel<BsonDocument> オブジェクトは sample_restaurants.restaurants コレクションと sample_mflix.movies コレクションの削除操作を表しています。
var restaurantToDelete = new BulkWriteDeleteOneModel<BsonDocument>( "sample_restaurants.restaurants", Builders<BsonDocument>.Filter.Eq("restaurant_id", "5678") ); var movieToDelete = new BulkWriteDeleteOneModel<BsonDocument>( "sample_mflix.movies", Builders<BsonDocument>.Filter.Eq("title", "Mr. Nobody") );
複数のドキュメントを削除するには、BulkWriteDeleteManyModel<TDocument>クラスのインスタンスを作成し、削除するドキュメントを指定するクエリフィルターを渡します。DeleteMany操作により、クエリフィルターに一致するすべてのドキュメントが削除されます。
次のコード例では、BulkWriteDeleteManyModel<BsonDocument>オブジェクトは sample_restaurants.restaurantsコレクションの削除操作を表しています。この操作は、nameフィールドの値が "Mongo's Deli" であるすべてのドキュメントを照合して削除します。
var deleteManyModel = new BulkWriteDeleteManyModel<BsonDocument>( "sample_restaurants.restaurants", Builders<BsonDocument>.Filter.Eq("name", "Mongo's Deli") );
一括操作の実行
実行する操作ごとに BulkWriteModelインスタンスを定義したら、IReadOnlyList インターフェースを実装するクラスのインスタンスを作成します。この IReadOnlyList に BulkWriteModel オブジェクトを追加し、IReadOnlyList を BulkWrite() または BulkWriteAsync() メソッドに渡します。デフォルトでは 、これらのメソッドはコレクションで定義された順序で操作を実行します。
Tip
IReadOnlyList
Array と List は、IReadOnlyList インターフェースを実装する 2 つの一般的なクラスです。
同期 BulkWrite() メソッドと非同期 BulkWriteAsync() メソッドを使用して複数の名前空間で一括書込み操作を実行する方法を表示するには、次のタブから を選択します。
var client = new MongoClient("mongodb://localhost:27017"); var restaurantNamespace = "sample_restaurants.restaurants"; var movieNamespace = "sample_mflix.movies"; var bulkWriteModels = new[] { new BulkWriteInsertOneModel<BsonDocument>( restaurantNamespace, new BsonDocument{ { "name", "Mongo's Deli" }, { "cuisine", "Sandwiches" }, { "borough", "Manhattan" }, { "restaurant_id", "1234" } } ), new BulkWriteInsertOneModel<BsonDocument>( movieNamespace, new BsonDocument{ { "name", "Sarah's Secret" }, { "year", 1988 } } ), new BulkWriteUpdateManyModel<BsonDocument>( restaurantNamespace, Builders<BsonDocument>.Filter.Eq("name", "Mongo's Deli"), Builders<BsonDocument>.Update.Set("cuisine", "Sandwiches and Salads") ), new BulkWriteDeleteOneModel<BsonDocument>( movieNamespace, Builders<BsonDocument>.Filter.Eq("title", "House") ) }; var result = client.BulkWrite(bulkWriteModels); Console.WriteLine(result);
var client = new MongoClient("mongodb://localhost:27017"); var restaurantNamespace = "sample_restaurants.restaurants"; var movieNamespace = "sample_mflix.movies"; var bulkWriteModels = new[] { new BulkWriteInsertOneModel<BsonDocument>( restaurantNamespace, new BsonDocument{ { "name", "Mongo's Deli" }, { "cuisine", "Sandwiches" }, { "borough", "Manhattan" }, { "restaurant_id", "1234" } } ), new BulkWriteInsertOneModel<BsonDocument>( movieNamespace, new BsonDocument{ { "name", "Sarah's Secret" }, { "year", 1988 } } ), new BulkWriteUpdateManyModel<BsonDocument>( restaurantNamespace, Builders<BsonDocument>.Filter.Eq("name", "Mongo's Deli"), Builders<BsonDocument>.Update.Set("cuisine", "Sandwiches and Salads") ), new BulkWriteDeleteOneModel<BsonDocument>( movieNamespace, Builders<BsonDocument>.Filter.Eq("title", "House") ) }; var result = await client.BulkWriteAsync(bulkWriteModels); Console.WriteLine(result);
上記のコード例では、次の出力が生成されます。
BulkWriteResult({'writeErrors': [], 'writeConcernErrors': [], 'nInserted': 2, 'nUpserted': 0, 'nMatched': 2, 'nModified': 2, 'nRemoved': 1, 'upserted': []}, acknowledged=True)
一括書き込みをカスタマイズする
BulkWrite() または BulkWriteAsync() メソッドを呼び出すと、ClientBulkWriteOptionsクラスのインスタンスを渡すことができます。ClientBulkWriteOptionsクラスには、 一括書込み操作を構成するために使用できるオプションを表す次のプロパティが含まれています。
プロパティ | 説明 |
|---|---|
| 操作がドキュメントレベルの検証をバイパスするかどうかを指定します。詳細については、 MongoDB Serverマニュアルの「 スキーマバリデーション 」を参照してください。デフォルトは |
| |
|
|
| パラメータ名と値のマップ( |
|
|
| 書込み操作に使用する書込み保証 (write concern)で、 |
次のコード例では、ClientBulkWriteOptionsオブジェクトを使用して 一括書込み操作 をカスタマイズします。
戻り値
BulkWrite() メソッドと BulkWriteAsync() メソッドは、次のプロパティを含む ClientBulkWriteResultオブジェクトを返します。
プロパティ | 説明 |
|---|---|
| サーバーが一括書き込み操作を確認したかどうかを示します。このプロパティの値が |
| 成功した各 削除操作の結果を含む |
| 削除されたドキュメントの数(存在する場合)。 |
| 成功した各 挿入操作の結果を含む |
| 挿入されたドキュメントの数(存在する場合)。 |
| アップデートに一致したドキュメントの数(該当する場合)。 |
| 変更されたドキュメントの数(存在する場合)。 |
| 成功した各 更新操作の結果を含む |
| アップサートされたドキュメントの数(存在する場合)。 |
例外の処理
一括書き込み操作のいずれかの操作が失敗した場合、 .NET/ C#ドライバーは ClientBulkWriteException をスローし、それ以上の操作を実行しません。
ClientBulkWriteExceptionオブジェクトには次のプロパティが含まれています。
プロパティ | 説明 |
|---|---|
|
|
|
|
| 一括書込み |
|
|
| |
| 内部例外。データ型: |
照合
操作の照合を構成するには、照合クラスのインスタンスを作成します。
次の表では、Collation コンストラクターが受け入れるパラメーターを説明しています。また、各設定の値を読み取るために使用できる対応するクラスプロパティも一覧表示されます。
Parameter | 説明 | クラスプロパティ |
|---|---|---|
| Unicode 用の国際コンポーネント(ICU)ロケールを指定します。サポートされているロケールのリストについては、 MongoDB Serverマニュアルの 「照合ロケールとデフォルト パラメーター」 を参照してください。単純なバイナリ比較を使用する場合は、 |
|
| (任意)大文字と小文字の比較を含めるかどうかを指定します。この引数が |
|
|
|
|
|
| |
| (任意)ドライバーが数字の string を数値として比較するかどうかを指定します。この引数が |
|
| (任意) |
|
| (任意) |
|
|
|
|
| (任意)発音区別符号を含む string を、string |
|
照合の詳細については、 MongoDB Serverマニュアルの 照合 ページを参照してください。
詳細情報
個々の書込み操作を実行する方法については、次のガイドを参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。
クライアント一括書込み (write)