この章では、mongoシェルを使用してMongoDBドキュメントデータのバッチ操作(bulkWrite)を紹介します。ここでのバッチ操作は、前の章で言及されているドキュメントのバッチ更新だけでなく、ドキュメントの挿入、更新、および削除のバッチ操作も含まれます。

bulkWrite関数は、mongoシェルでのバッチ操作に使用されます。

ヒント:バッチ操作は、バッチデータの同期が必要なシナリオでよく使用されます。

bulkWrite関数でサポートされる書き込み操作

バッチ操作は、以下の書き込み操作の組み合わせをサポートしています:

  • insertOne - ドキュメントを挿入
  • updateOne - ドキュメントを更新
  • updateMany - 一括のドキュメントを更新
  • replaceOne - ドキュメントを置換
  • deleteOne - ドキュメントを削除
  • deleteMany - 一括のドキュメントを削除

構文形式

db.collection.bulkWrite(
   [ <operation 1>, <operation 2>, ... ],
)

説明:

  • operation - 書き込み操作の構成を表します
  • bulkWriteは書き込み操作の配列を受け入れます。

以下は、一連のドキュメント書き込み操作のバッチ実行を示す包括的な例です。

db.inventory.bulkWrite(
      [
	     // ドキュメントを挿入
         { insertOne :
            {
			// ドキュメントの内容
               "document" :
               {
                  "_id" : 4, "char" : "Dithras", "class" : "barbarian", "lvl" : 4
               }
            }
         },
         { insertOne :
            {
               "document" :
               {
                  "_id" : 5, "char" : "Taeln", "class" : "fighter", "lvl" : 3
               }
			 }
         },
		 // ドキュメントを更新、updateManyは一括のドキュメントを更新するためのものです
         { updateOne :
            {
			   // 更新条件
               "filter" : { "char" : "Eldon" },
			   // 更新内容
               "update" : { $set : { "status" : "Critical Injury" } }
            }
         },
		 // ドキュメントを削除、deleteManyは複数のドキュメントを削除するためのものです
         { deleteOne :
		    // 削除条件
            { "filter" : { "char" : "Brisbane" } }
         },
		 // ドキュメントを置換
         { replaceOne :
            {
			    // 置換条件
               "filter" : { "char" : "Meldane" },
			   // 置換内容
               "replacement" : { "char" : "Tanys", "class" : "oracle", "lvl" : 4 }
            }
         }
      ]
   );