Tip
MongoDB は、一括書き込み操作を実行するための Mongo.bulkWrite() メソッドも提供します。
説明
Bulk.find.update(<update>)一括操作リストに
multiアップデート操作を追加します。このメソッドは、既存のドキュメントの特定のフィールドをアップデートします。Use the
Bulk.find()method to specify the condition that determines which documents to update. TheBulk.find.update()method updates all matching documents. To specify a single document update, seeBulk.find.updateOne().Bulk.find.update()は、次のパラメーターを受け入れます。Parameterタイプ説明ドキュメントまたはパイプライン
適用される変更内容。次のいずれかになります。
更新演算子式のみを含む更新ドキュメント。
次の集計ステージのみを含む集計パイプライン:
$addFieldsおよびそのエイリアス$set$replaceRootおよびそのエイリアス$replaceWith
update 変更パラメーターの詳細については、
db.collection.updateMany()のリファレンス ページを参照してください。Bulk.find()からの関連<query>ドキュメントと更新ドキュメントの合計は、BSON ドキュメントの最大サイズ以下である必要があります。この操作について upsert: true を指定するには、
Bulk.find.upsert()を使用します。Bulk.find.upsert()では、Bulk.find()クエリ条件に一致するドキュメントがない場合、アップデート操作によって 1 つのドキュメントのみが挿入されます。特定の配列要素を更新するために
arrayFiltersを指定するには、Bulk.find.arrayFilters()とともに使用します。関連する
Bulk.find()に使用するインデックスを指定するには、Bulk.find.hint()を参照してください。ドキュメントをまとめて置換するには、
Bulk.find.replaceOne()を参照してください。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
注意
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
例
次の例では、 itemsコレクションでBulk()操作ビルダを初期化し、さまざまなmultiアップデート操作を操作リストに追加します。
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } ); bulk.find( { item: null } ).update( { $set: { item: "TBD" } } ); bulk.execute();
集約パイプラインによるアップデート
更新メソッドは集計パイプラインを受け入れることができます。 たとえば、次の例では次のものが使用されています。
集計変数
NOWは現在の日時を解決し、$currentDate更新演算子式と同様に動作します。集計変数にアクセスするには、変数の前に二重ドル記号$$を付け、引用符で囲みます。
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "P" } ).update( [ { $set: { points: 0, lastModified: "$$NOW" } } ] ); bulk.execute();