db.collection.initializeOrderedBulkOp()
Tip
MongoDB は、一括書込み操作を実行するための db.collection.bulkWrite()
メソッドも提供します。
定義
db.collection.initializeOrderedBulkOp()
重要
mongosh メソッド
このページでは、
mongosh
メソッドが文書化されます。これは Node.js などの言語固有のドライバーのドキュメントではありません。MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。
コレクションの新しい
Bulk()
操作ビルダを初期化して返します。 ビルダは、MongoDB が一括して実行する書込み (write) 操作の順序付きリストを作成します。次の値を返します。 新しい Bulk()
操作ビルダ オブジェクト。
動作
操作の順序
順序付きの操作リストの場合、MongoDB はリスト内の書込み操作を順番に実行します。
操作の実行
ordered
リストの操作を実行する場合、MongoDB は操作をoperation type
と連続性によってグループ化します。つまり、同じタイプの連続した操作がグループ化されます。 たとえば、順序付きリストに 2 回の挿入操作があり、その後に更新操作、さらに別の挿入操作が続く場合、MongoDB は操作を 3 つのグループに分けます。最初のグループには 2 回の挿入操作、2 番目のグループには更新操作、3 番目のグループにはには、最後の挿入操作が含まれます。 この動作は、将来のバージョンで変更される可能性があります。
Bulk()
{ のmongosh
操作とドライバーの同等のメソッドでは、グループ内の操作数に制限はありません。一括操作実行用に操作がどのようにグループ化されているかを確認するには、実行Bulk.getOperations()
後 に呼び出します。
シャーディングされたコレクションで操作のordered
リストを実行すると、通常、 unordered
リストの実行よりも時間がかかります。これは、ordered リストでは毎回の操作で前の操作の完了を待機する必要があるためです。
Error Handling
いずれかの書込み操作の処理中にエラーが発生した場合、MongoDB はリスト内の残りの書込み操作を処理せずに返します。
例
以下の例では、 users
コレクションでBulk()
操作ビルダを初期化し、一連の書込み操作を追加して操作を実行します。
var bulk = db.users.initializeOrderedBulkOp(); bulk.insert( { user: "abc123", status: "A", points: 0 } ); bulk.insert( { user: "ijk123", status: "A", points: 0 } ); bulk.insert( { user: "mop123", status: "P", points: 0 } ); bulk.find( { status: "D" } ).delete(); bulk.find( { status: "P" } ).update( { $set: { comment: "Pending" } } ); bulk.execute();