sql >> データベース >  >> NoSQL >> MongoDB

MongoDB BulkWrite()

    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のドキュメントを参照してください。 詳細については。


    1. Express.jsとは何ですか?

    2. PostgresとHasuraでのCouchDBスタイルの同期と競合解決

    3. Redis通知:有効期限が切れたときにキーと値を取得する

    4. redisは耐久性のあるデータストアですか?