MongoDBでは、 db.collection.bulkWrite() メソッドは、実行順序のコントロールを使用して複数の書き込み操作を実行します。
一括書き込み操作は、単一のコレクションに影響します。 コレクション partは、操作を実行するコレクションの名前です。
一括書き込み操作
db.collection.bulkWrite() メソッドを使用して、次の書き込み操作を実行できます。
-
insertOne -
updateOne -
updateMany -
replaceOne -
deleteOne -
deleteMany
これらのメソッドはいずれも、 db.collection.bulkWrite()の呼び出しに含めることができます。 、同じ呼び出しにさまざまなメソッドを含めることができます。
例
db.collection.bulkWrite()の使用例を次に示します。 petsと呼ばれるコレクションに対して一括書き込み操作を実行します :
次のドキュメントをpetsというコレクションに挿入するとします。 :
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog", weight: 20 },
{ _id: 2, name: "Bark", type: "Dog", weight: 10 },
{ _id: 3, name: "Meow", type: "Cat" },
{ _id: 4, name: "Scratch", type: "Cat" },
{ _id: 5, name: "Bruce", type: "Bat" }
])
これで、 db.collection.bulkWrite()を使用できます そのコレクションに対して一括書き込み操作を実行します。
例:
db.pets.bulkWrite([
{ insertOne: { "document": { "_id": 6, "name": "Bubbles", "type": "Fish" }}},
{ updateOne : {
"filter" : { "_id" : 2 },
"update" : { $set : { "weight" : 15 } }
} },
{ deleteOne : { "filter" : { "_id" : 5 } } },
{ replaceOne : {
"filter" : { "_id" : 4 },
"replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 }
} }
]) 結果:
{
"acknowledged" : true,
"deletedCount" : 1,
"insertedCount" : 1,
"matchedCount" : 2,
"upsertedCount" : 0,
"insertedIds" : {
"0" : 6
},
"upsertedIds" : {
}
} この場合、1つのドキュメントを挿入し、別のドキュメントを更新し、別のドキュメントを削除し、別のドキュメントを置き換えました。
db.collection.bulkWrite() メソッドは次を返します:
- ブール値の
確認済みtrueとして 操作が書き込みの懸念またはfalseで実行された場合 書き込みの懸念が無効になっている場合。 - 各書き込み操作のカウント。
-
_idを含む配列 正常に挿入またはアップサートされたドキュメントごとに。
結果を表示
それでは、コレクション内のドキュメントをもう一度見てみましょう。
db.pets.find() 結果:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 15 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 }
{ "_id" : 6, "name" : "Bubbles", "type" : "Fish" } すべての変更が指定どおりに行われたことがわかります。
注文コード> パラメータ
一括書き込み操作は、順序付けまたは順序付けなしのいずれかです。デフォルトでは、注文されています。
順序付きブールパラメータを使用して順序を指定できます。 trueの値を指定する これを操作の順序付きリストにし、 falseに設定します 順序付けられていない操作のリストになります。
操作の順序付きリストを使用して、MongoDBは操作をシリアルに実行します。書き込み操作の1つの処理中にエラーが発生した場合、MongoDBは、リスト内の残りの書き込み操作を処理せずに戻ります。
順序付けられていない操作のリストを使用すると、MongoDBは操作を並行して実行できます(ただし、これは保証されていません)。書き込み操作の1つの処理中にエラーが発生した場合、MongoDBはリスト内の残りの書き込み操作を処理し続けます。
詳細情報
db.collection.bulkWrite() メソッドはwriteConcernも受け入れます 引数。書き込み操作のためにMongoDBから要求される確認応答のレベルを説明します。
db.collection.bulkWrite()については、MongoDBのドキュメントを参照してください。 詳細については。