Tip
MongoDB は、一括書き込み操作を実行するための Mongo.bulkWrite() メソッドも提供します。
説明
Bulk.find.updateOne(<update>)一括操作リストに 1 つのドキュメントのアップデート操作を追加します。
Use the
Bulk.find()method to specify the condition that determines which document to update. TheBulk.find.updateOne()method limits the update to a single document. To update multiple documents, seeBulk.find.update().Bulk.find.updateOne()は、次のパラメーターを受け入れます。Parameterタイプ説明ドキュメントまたはパイプライン
適用される変更内容。次のいずれかになります。
Update document:
更新演算子式のみが含まれます。
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()も参照してください。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
- 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.
動作
<update>ドキュメントに更新演算子式のみが含まれている場合は、次のようになります。
{ $set: { status: "D" }, $inc: { points: 2 } }
Then, Bulk.find.updateOne() updates only the corresponding fields, status and points, in the document.
例
The following example initializes a Bulk() operations builder for the items collection, and adds various updateOne() operations to the list of operations.
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();