Bulk.find.updateOne()
On this page
Tip
Starting in version 3.2, MongoDB also provides the db.collection.bulkWrite()
method for performing bulk write operations.
Description
Bulk.find.updateOne(<update>)
-
Adds a single document update operation to a bulk operations list.
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()
accepts the following parameter:Parameter Type Description update document or pipeline The modifications to apply. Can be one of the following: A replacement document Contains only field and value pairs.
See alsoBulk.find.replaceOne()
.Update document Contains only update operator expressions. Aggregation pipeline Starting in MongoDB 4.2Contains only the following aggregation stages: $addFields
and its alias$set
$project
and its alias$unset
$replaceRoot
and its alias$replaceWith
.
For more information on the update modification parameter, see the
db.collection.updateOne()
reference page.The sum of the associated
<query>
document from theBulk.find()
and the update document must be less than or equal to the maximum BSON document size.-
To specify an upsert: true for this operation, use with
Bulk.find.upsert()
. -
To specify
arrayFilters
to update specific array elements, use withBulk.find.arrayFilters()
. -
To specify the index to use for the associated
Bulk.find()
, seeBulk.find.hint()
. -
To replace a document wholesale, see also
Bulk.find.replaceOne()
.
Behavior
If the <update>
document contains only update operator expressions, as in:
{ $set: { status: "D" }, $inc: { points: 2 } }
Then, Bulk.find.updateOne()
updates only the corresponding fields, status
and points
, in the document.
Example
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();
Update with Aggregation Pipeline
Starting in version 4.2, update methods can accept an aggregation pipeline. For example, the following uses:
-
the
$set
stage which can provide similar behavior to the$set
update operator expression, -
the aggregation variable
NOW
, which resolves to the current datetime and can provide similar behavior to a$currentDate
update operator expression. To access aggregation variables, prefix the variable with double dollar signs$$
and enclose in quotes.
var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "P" } ).updateOne( [ { $set: { points: 0, lastModified: "$$NOW" } } ] ); bulk.execute();