Navigation

collection.updateMany()

Definition

collection.updateMany()

Update one or more documents in a collection based on a query filter.

Usage

Example

To call the collection.updateMany() action from a Function, get a collection handle with database.collection() then call the handle’s updateMany() method.

const query = {};
const update = { "$mul": { "quantity": 10 } };
const options = { "upsert": false }

return itemsCollection.updateMany(query, update, options)
  .then(result => {
    const { matchedCount, modifiedCount } = result;
    console.log(`Successfully matched ${matchedCount} and modified ${modifiedCount} items.`)
    return result
  })
  .catch(err => console.error(`Failed to update items: ${err}`))

To call the collection.updateMany() action from a JavaScript SDK, use the RemoteMongoCollection.updateMany() method.

const query = {};
const update = { "$mul": { "quantity": 10 } };
const options = { "upsert": false }

itemsCollection.updateMany(query, update, options)
  .then(result => {
    const { matchedCount, modifiedCount } = result;
    console.log(`Successfully matched ${matchedCount} and modified ${modifiedCount} items.`)
  })
  .catch(err => console.error(`Failed to update items: ${err}`))

To call the collection.updateMany() action from the Java/Android SDK, use the RemoteMongoCollection.updateMany() method.

Document filterDoc = new Document();
Document updateDoc = new Document().append("$mul", new Document().append("quantity", 10));

final Task <RemoteUpdateResult> updateTask =
  itemsCollection.updateMany(filterDoc, updateDoc);
updateTask.addOnCompleteListener(new OnCompleteListener <RemoteUpdateResult> () {
    @Override
    public void onComplete(@NonNull Task <RemoteUpdateResult> task) {
        if (task.isSuccessful()) {
            long numMatched = task.getResult().getMatchedCount();
            long numModified = task.getResult().getModifiedCount();
            Log.d("app", String.format("successfully matched %d and modified %d documents",
                  numMatched, numModified));
        } else {
            Log.e("app", "failed to update document with: ", task.getException());
        }
    }
});

To call the collection.updateMany() action from the Swift/iOS SDK, use the RemoteMongoCollection.updateMany() method.

let query : Document = [];
let update : Document = ["$mul": ["quantity": 10] as Document];

itemsCollection?.updateMany(filter: query, update: update) { result in
    switch result {
    case .success(let result):
        print("Successfully matched \(result.matchedCount) and modified \(result.modifiedCount) items.");
    case .failure(let error):
        print("Failed to modify items: \(error)");
    }
}

Parameters

The collection.updateMany() action has the following form:

collection("myColl").updateMany(query, update, options)
Parameter Description

Query Filter

query: <document>

Required. A standard MongoDB query document that specifies which documents to update. You can use most query selectors except for evaluation, geospatial, or bitwise selectors.

Specify an empty query filter ({}) to update all documents in the collection.

Update Operation

update: <document>
Required. A standard MongoDB update document that specifies the update operation to perform on all documents that match the query. You can use most update operators.

Update Options

options: <document>

A document that specifies configuration options for the query. The options document has the following form:

{
   "upsert": <boolean>
}

Upsert

options.upsert: <boolean>
Optional. Default: false. A boolean that, if true, indicates that MongoDB should insert a new document that matches the query filter when the query does not match any existing documents in the collection.

The updateMany() method has the following form:

updateMany(query, update, options)
Parameter Description

Query Filter

query: <document>

Required. A standard MongoDB query document that specifies which documents to update. You can use most query selectors except for evaluation, geospatial, or bitwise selectors.

Specify an empty query filter ({}) to update all documents in the collection.

Update Operation

update: <document>
Required. A standard MongoDB update document that specifies the update operation to perform on all documents that match the query. You can use most update operators.

Update Options

options: <document>

A document that specifies configuration options for the query. The options document has the following form:

{
   "upsert": <boolean>
}

Upsert

options.upsert: <boolean>
Optional. Default: false. A boolean that, if true, indicates that MongoDB should insert a new document that matches the query filter when the query does not match any existing documents in the collection.

The updateMany() method has the following form:

updateMany(query, update, options)
Parameter Description

Query Filter

query: <document>

Required. A standard MongoDB query document that specifies which documents to update. You can use most query selectors except for evaluation, geospatial, or bitwise selectors.

Specify an empty query filter ({}) to update all documents in the collection.

Update Operation

update: <document>
Required. A standard MongoDB update document that specifies the update operation to perform on all documents that match the query. You can use most update operators.

Update Options

options: <document>

A document that specifies configuration options for the query. The options document has the following form:

{
   "upsert": <boolean>
}

Upsert

options.upsert: <boolean>
Optional. Default: false. A boolean that, if true, indicates that MongoDB should insert a new document that matches the query filter when the query does not match any existing documents in the collection.

The updateMany() method has the following form:

updateMany(query, update, options)
Parameter Description

Query Filter

query: <document>

Required. A standard MongoDB query document that specifies which documents to update. You can use most query selectors except for evaluation, geospatial, or bitwise selectors.

Specify an empty query filter ({}) to update all documents in the collection.

Update Operation

update: <document>
Required. A standard MongoDB update document that specifies the update operation to perform on all documents that match the query. You can use most update operators.

Update Options

options: <document>

A document that specifies configuration options for the query. The options document has the following form:

{
   "upsert": <boolean>
}

Upsert

options.upsert: <boolean>
Optional. Default: false. A boolean that, if true, indicates that MongoDB should insert a new document that matches the query filter when the query does not match any existing documents in the collection.

Return Value

The collection.updateMany() action returns a Promise that resolves to a document that describes the update operation.

Promise<result: document>

The RemoteMongoCollection.updateMany() method returns a Promise that resolves to a RemoteUpdateResult object that describes the update operation.

Promise<result: RemoteUpdateResult>

The RemoteMongoCollection.updateMany() method returns a Task that resolves to a RemoteUpdateResult object that describes the update operation.

Task<Document RemoteUpdateResult>

The RemoteMongoCollection.updateMany() method returns a StitchResult enum that resolves to a RemoteUpdateResult object that describes the update operation.

enum StitchResult {
  case success(result: RemoteUpdateResult)
  case failure(error: StitchError)
}
Value Description

Matched Count

result.matchedCount: <integer>
result.matchedCount: <integer>
result.matchedCount: <Long>
result.matchedCount: <Int>
The number of documents in the collection that match the provided query filter.

Modified Count

result.modifiedCount: <integer>
result.modifiedCount: <integer>
result.modifiedCount: <Long>
result.modifiedCount: <Int>
The number of documents in the collection that were modified by the update operation.

Upserted ID

result.upsertedId: <ObjectID>
result.upsertedId: <ObjectID>
result.upsertedId: <ObjectID>
result.upsertedId: <ObjectID>
The _id value of the document inserted by an upsert operation. This value is only present when the upsert option is enabled and the update query does not match any documents.

Examples

The following examples assume that you have defined roles and permissions that allow the database operations on the test.example collection.

Updating Multiple Documents

Assume the test.example collection contains the following documents:

{ "grade": 91, "_id": ObjectId("5a0c516ac7ecd33f1aea091A") }
{ "grade": 89, "_id": ObjectId("5a0c516ac7ecd33f1aea0916") }
{ "grade": 87, "_id": ObjectId("5a0c516ac7ecd33f1aea0915") }
{ "grade": 68, "_id": ObjectId("5a0c516ac7ecd33f1aea0919") }
{ "grade": 62, "_id": ObjectId("5a0c516ac7ecd33f1aea0917") }
{ "grade": 22, "_id": ObjectId("5a0c516ac7ecd33f1aea0918") }

MongoDB Stitch contains a function named apply_curve with the following definition:

exports = function() {
   const mongodb = context.services.get("mongodb-atlas");
   const collection = mongodb.db("test").collection("example");
   collection
     .updateMany({}, {"$inc": {"grade": 9}})
     .then(result => {
       // result.matchedCount === number of records that were updated
       return result;
     });
};

Calling apply_curve returns the following document:

{ "matchedCount": 6 }

The resulting documents in test.example are as follows:

{ "grade": 100, "_id": ObjectId("5a0c516ac7ecd33f1aea091A") }
{ "grade": 98, "_id": ObjectId("5a0c516ac7ecd33f1aea0916") }
{ "grade": 96, "_id": ObjectId("5a0c516ac7ecd33f1aea0915") }
{ "grade": 77, "_id": ObjectId("5a0c516ac7ecd33f1aea0919") }
{ "grade": 71, "_id": ObjectId("5a0c516ac7ecd33f1aea0917") }
{ "grade": 31, "_id": ObjectId("5a0c516ac7ecd33f1aea0918") }