Bulk.find.updateOne()
Tip
MongoDB は、一括書込み操作を実行するための db.collection.bulkWrite()
メソッドも提供します。
説明
Bulk.find.updateOne(<update>)
一括操作リストに 1 つのドキュメントのアップデート操作を追加します。
Bulk.find()
メソッドを使用して、アップデートするドキュメントを決定する条件を指定します。Bulk.find.updateOne()
メソッドは更新を 1 つのドキュメントに制限します。 複数のドキュメントを更新するには、Bulk.find.update()
を参照してください。Bulk.find.updateOne()
は、次のパラメーターを受け入れます。Parameterタイプ説明ドキュメントまたはパイプライン適用される変更内容。次のいずれかになります。
置換ドキュメントフィールドと値のペアのみが含まれます。
Update document更新演算子式のみが含まれます。Aggregation Pipeline次の集計ステージのみが含まれます。
$addFields
およびそのエイリアス$set
$replaceRoot
とそのエイリアス$replaceWith
。
update 変更パラメーターの詳細については、
db.collection.updateOne()
のリファレンス ページを参照してください。Bulk.find()
からの関連<query>
ドキュメントと更新ドキュメントの合計は、BSON ドキュメントの最大サイズ以下である必要があります。この操作について upsert: true を指定するには、
Bulk.find.upsert()
を使用します。特定の配列要素を更新するために
arrayFilters
を指定するには、Bulk.find.arrayFilters()
とともに使用します。関連する
Bulk.find()
に使用するインデックスを指定するには、Bulk.find.hint()
を参照してください。ドキュメントをまとめて置換するには、
Bulk.find.replaceOne()
も参照してください。
動作
<update>
ドキュメントに更新演算子式のみが含まれている場合は、次のようになります。
{ $set: { status: "D" }, $inc: { points: 2 } }
次に、 Bulk.find.updateOne()
はドキュメント内の対応するフィールドであるstatus
とpoints
のみを更新します。
例
次の例では、 items
コレクションでBulk()
操作ビルダを初期化し、さまざまなupdateOne()
操作を操作リストに追加します。
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "D" } ).updateOne( { $set: { status: "I", points: "0" } } ); bulk.execute();
集約パイプラインによるアップデート
更新メソッドは集計パイプラインを受け入れることができます。 たとえば、次の例では次のものが使用されています。
集計変数
NOW
は現在の日時を解決し、$currentDate
更新演算子式と同様に動作します。集計変数にアクセスするには、変数の前に二重ドル記号$$
を付け、引用符で囲みます。
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "P" } ).updateOne( [ { $set: { points: 0, lastModified: "$$NOW" } } ] ); bulk.execute();