Bulk.find.update()
Tip
MongoDB は、一括書込み操作を実行するための db.collection.bulkWrite()
メソッドも提供します。
説明
Bulk.find.update(<update>)
一括操作リストに
multi
アップデート操作を追加します。このメソッドは、既存のドキュメントの特定のフィールドをアップデートします。Bulk.find()
メソッドを使用して、アップデートするドキュメントを決定する条件を指定します。Bulk.find.update()
メソッドは、一致するすべてのドキュメントをアップデートします。 1 つのドキュメントのアップデートを指定するには、Bulk.find.updateOne()
を参照してください。Bulk.find.update()
は、次のパラメーターを受け入れます。Parameterタイプ説明ドキュメントまたはパイプライン適用される変更内容。次のいずれかになります。
Update document更新演算子式のみが含まれます。Aggregation Pipeline次の集計ステージのみが含まれます。
$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()
を参照してください。
例
次の例では、 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();