Use the
db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
5 method to update multiple documents that matches with the specified filter criteria in a collection.Syntax:
db.collection.updateMany[filter, document, options]
Parameters:
- filter: The selection criteria for the update, same as find[] method.
- document: A document or pipeline that contains modifications to apply.
- options: Optional. May contains options for update behavior. It includes upsert, writeConcern, collation, etc.
In the above syntax,
db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
6 points to the current database, db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
7 points is an existing collection name.To demonstrate the update operation, insert the following sample documents in the
db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
8 collection.Sample Data
Copydb.employees.insertMany[[
{
_id:1,
firstName: "John",
lastName: "King",
email: "[email protected]",
salary: 5000
},
{
_id:2,
firstName: "Sachin",
lastName: "T",
email: "[email protected]",
salary: 8000
},
{
_id:3,
firstName: "James",
lastName: "Bond",
email: "[email protected]",
salary: 7500
},
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 7000
},
{
_id:5,
firstName: "Kapil",
lastName: "D",
email: "[email protected]",
salary: 4500
},
{
_id:6,
firstName: "Amitabh",
lastName: "B",
email: "[email protected]",
salary: 7000
}
]]
The following modifies matching documents using the
db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
2 method in db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
8 collection.Example: updateMany[]
Copydb.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
Output
{
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
In the above example, the first parameter is the filter criteria specified as a document,
{
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
1 indicates that find documents whose {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
2 are {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
3. The second parameter is used to specify fields and values to be modified on the matching document in the {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
4 format. Use the to specify an action to perform. Here we want to set the value of fields, so use {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
5 operator to specify fields and updated values in {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
6 format. {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
7 modifies the {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
2 fields of all matching documents to {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
9.In the output,
db.employees.find[]
0 indicates the number of documents that matched with the criteria, and db.employees.find[]
1 indicates the number of documents updated.Now, check whether it has updated a value or not using the
db.employees.find[]
2 method shown below.Check Updated Document
Copydb.employees.find[]
Output
[
{
_id: 1,
firstName: 'John',
lastName: 'King',
email: '[email protected]',
salary: 5000
},
{
_id: 2,
firstName: 'Sachin',
lastName: 'T',
email: '[email protected]',
salary: 8000
},
{
_id: 3,
firstName: 'James',
lastName: 'Bond',
email: '[email protected]',
salary: 7500
},
{
_id: 4,
firstName: 'Steve',
lastName: 'J',
email: '[email protected]',
salary: 8500
},
{
_id: 5,
firstName: 'Kapil',
lastName: 'D',
email: '[email protected]',
salary: 4500
},
{
_id: 6,
firstName: 'Amitabh',
lastName: 'B',
email: '[email protected]',
salary: 8500
}
]
The
db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
2 method adds the specified field if it does not exist in a matching document. For example, the following will add the db.employees.find[]
4 field.Example: updateMany[]
Copydb.employees.updateMany[{firstName:"Steve"}, { $set: {location: "USA"}}]
Output
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
Execute the following
db.employees.find[]
2 method to see the updated data.Check Updated Document
Copydb.employees.find[{firstName:"Steve"}]
Output
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 8500,
location:"USA"
}
If you specify an empty filter criteria
db.employees.find[]
6, then it will update all the documents. The following will update or add db.employees.find[]
4 field in all documents.Example: updateMany[]
Copydb.employees.insertMany[[
{
_id:1,
firstName: "John",
lastName: "King",
email: "[email protected]",
salary: 5000
},
{
_id:2,
firstName: "Sachin",
lastName: "T",
email: "[email protected]",
salary: 8000
},
{
_id:3,
firstName: "James",
lastName: "Bond",
email: "[email protected]",
salary: 7500
},
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 7000
},
{
_id:5,
firstName: "Kapil",
lastName: "D",
email: "[email protected]",
salary: 4500
},
{
_id:6,
firstName: "Amitabh",
lastName: "B",
email: "[email protected]",
salary: 7000
}
]]
0Output
db.employees.insertMany[[
{
_id:1,
firstName: "John",
lastName: "King",
email: "[email protected]",
salary: 5000
},
{
_id:2,
firstName: "Sachin",
lastName: "T",
email: "[email protected]",
salary: 8000
},
{
_id:3,
firstName: "James",
lastName: "Bond",
email: "[email protected]",
salary: 7500
},
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 7000
},
{
_id:5,
firstName: "Kapil",
lastName: "D",
email: "[email protected]",
salary: 4500
},
{
_id:6,
firstName: "Amitabh",
lastName: "B",
email: "[email protected]",
salary: 7000
}
]]
1Use the
db.employees.find[]
8 update operator to increase the value of the field by the specified amount. The following increases the {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
2 by [
{
_id: 1,
firstName: 'John',
lastName: 'King',
email: '[email protected]',
salary: 5000
},
{
_id: 2,
firstName: 'Sachin',
lastName: 'T',
email: '[email protected]',
salary: 8000
},
{
_id: 3,
firstName: 'James',
lastName: 'Bond',
email: '[email protected]',
salary: 7500
},
{
_id: 4,
firstName: 'Steve',
lastName: 'J',
email: '[email protected]',
salary: 8500
},
{
_id: 5,
firstName: 'Kapil',
lastName: 'D',
email: '[email protected]',
salary: 4500
},
{
_id: 6,
firstName: 'Amitabh',
lastName: 'B',
email: '[email protected]',
salary: 8500
}
]
0 whose salary is {
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
9.Example: $inc Operator
Copydb.employees.insertMany[[
{
_id:1,
firstName: "John",
lastName: "King",
email: "[email protected]",
salary: 5000
},
{
_id:2,
firstName: "Sachin",
lastName: "T",
email: "[email protected]",
salary: 8000
},
{
_id:3,
firstName: "James",
lastName: "Bond",
email: "[email protected]",
salary: 7500
},
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 7000
},
{
_id:5,
firstName: "Kapil",
lastName: "D",
email: "[email protected]",
salary: 4500
},
{
_id:6,
firstName: "Amitabh",
lastName: "B",
email: "[email protected]",
salary: 7000
}
]]
2Output
{
acknowledged: true,
insertedId: null,
matchedCount: 2,
modifiedCount: 2,
upsertedCount: 0
}
Update Multiple Fields
You can also specify multiple fields to update. The following updates
[
{
_id: 1,
firstName: 'John',
lastName: 'King',
email: '[email protected]',
salary: 5000
},
{
_id: 2,
firstName: 'Sachin',
lastName: 'T',
email: '[email protected]',
salary: 8000
},
{
_id: 3,
firstName: 'James',
lastName: 'Bond',
email: '[email protected]',
salary: 7500
},
{
_id: 4,
firstName: 'Steve',
lastName: 'J',
email: '[email protected]',
salary: 8500
},
{
_id: 5,
firstName: 'Kapil',
lastName: 'D',
email: '[email protected]',
salary: 4500
},
{
_id: 6,
firstName: 'Amitabh',
lastName: 'B',
email: '[email protected]',
salary: 8500
}
]
2 and [
{
_id: 1,
firstName: 'John',
lastName: 'King',
email: '[email protected]',
salary: 5000
},
{
_id: 2,
firstName: 'Sachin',
lastName: 'T',
email: '[email protected]',
salary: 8000
},
{
_id: 3,
firstName: 'James',
lastName: 'Bond',
email: '[email protected]',
salary: 7500
},
{
_id: 4,
firstName: 'Steve',
lastName: 'J',
email: '[email protected]',
salary: 8500
},
{
_id: 5,
firstName: 'Kapil',
lastName: 'D',
email: '[email protected]',
salary: 4500
},
{
_id: 6,
firstName: 'Amitabh',
lastName: 'B',
email: '[email protected]',
salary: 8500
}
]
3 fields.Example: Update Multiple Fields
Copydb.employees.insertMany[[
{
_id:1,
firstName: "John",
lastName: "King",
email: "[email protected]",
salary: 5000
},
{
_id:2,
firstName: "Sachin",
lastName: "T",
email: "[email protected]",
salary: 8000
},
{
_id:3,
firstName: "James",
lastName: "Bond",
email: "[email protected]",
salary: 7500
},
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 7000
},
{
_id:5,
firstName: "Kapil",
lastName: "D",
email: "[email protected]",
salary: 4500
},
{
_id:6,
firstName: "Amitabh",
lastName: "B",
email: "[email protected]",
salary: 7000
}
]]
4Output
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
Execute the following
db.employees.find[]
2 method to see the updated data.Check Updated Document
Copydb.employees.insertMany[[
{
_id:1,
firstName: "John",
lastName: "King",
email: "[email protected]",
salary: 5000
},
{
_id:2,
firstName: "Sachin",
lastName: "T",
email: "[email protected]",
salary: 8000
},
{
_id:3,
firstName: "James",
lastName: "Bond",
email: "[email protected]",
salary: 7500
},
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 7000
},
{
_id:5,
firstName: "Kapil",
lastName: "D",
email: "[email protected]",
salary: 4500
},
{
_id:6,
firstName: "Amitabh",
lastName: "B",
email: "[email protected]",
salary: 7000
}
]]
6Output
db.employees.insertMany[[
{
_id:1,
firstName: "John",
lastName: "King",
email: "[email protected]",
salary: 5000
},
{
_id:2,
firstName: "Sachin",
lastName: "T",
email: "[email protected]",
salary: 8000
},
{
_id:3,
firstName: "James",
lastName: "Bond",
email: "[email protected]",
salary: 7500
},
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 7000
},
{
_id:5,
firstName: "Kapil",
lastName: "D",
email: "[email protected]",
salary: 4500
},
{
_id:6,
firstName: "Amitabh",
lastName: "B",
email: "[email protected]",
salary: 7000
}
]]
7The
db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
2 method does not update any documents if no matching documents found. For example, the following will not update any documents.Example: updateMany[]
Copydb.employees.insertMany[[
{
_id:1,
firstName: "John",
lastName: "King",
email: "[email protected]",
salary: 5000
},
{
_id:2,
firstName: "Sachin",
lastName: "T",
email: "[email protected]",
salary: 8000
},
{
_id:3,
firstName: "James",
lastName: "Bond",
email: "[email protected]",
salary: 7500
},
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 7000
},
{
_id:5,
firstName: "Kapil",
lastName: "D",
email: "[email protected]",
salary: 4500
},
{
_id:6,
firstName: "Amitabh",
lastName: "B",
email: "[email protected]",
salary: 7000
}
]]
8Output
db.employees.insertMany[[
{
_id:1,
firstName: "John",
lastName: "King",
email: "[email protected]",
salary: 5000
},
{
_id:2,
firstName: "Sachin",
lastName: "T",
email: "[email protected]",
salary: 8000
},
{
_id:3,
firstName: "James",
lastName: "Bond",
email: "[email protected]",
salary: 7500
},
{
_id:4,
firstName: "Steve",
lastName: "J",
email: "[email protected]",
salary: 7000
},
{
_id:5,
firstName: "Kapil",
lastName: "D",
email: "[email protected]",
salary: 4500
},
{
_id:6,
firstName: "Amitabh",
lastName: "B",
email: "[email protected]",
salary: 7000
}
]]
9Upsert - Add if not Exist
Specify
[
{
_id: 1,
firstName: 'John',
lastName: 'King',
email: '[email protected]',
salary: 5000
},
{
_id: 2,
firstName: 'Sachin',
lastName: 'T',
email: '[email protected]',
salary: 8000
},
{
_id: 3,
firstName: 'James',
lastName: 'Bond',
email: '[email protected]',
salary: 7500
},
{
_id: 4,
firstName: 'Steve',
lastName: 'J',
email: '[email protected]',
salary: 8500
},
{
_id: 5,
firstName: 'Kapil',
lastName: 'D',
email: '[email protected]',
salary: 4500
},
{
_id: 6,
firstName: 'Amitabh',
lastName: 'B',
email: '[email protected]',
salary: 8500
}
]
6 as a third parameter in the [
{
_id: 1,
firstName: 'John',
lastName: 'King',
email: '[email protected]',
salary: 5000
},
{
_id: 2,
firstName: 'Sachin',
lastName: 'T',
email: '[email protected]',
salary: 8000
},
{
_id: 3,
firstName: 'James',
lastName: 'Bond',
email: '[email protected]',
salary: 7500
},
{
_id: 4,
firstName: 'Steve',
lastName: 'J',
email: '[email protected]',
salary: 8500
},
{
_id: 5,
firstName: 'Kapil',
lastName: 'D',
email: '[email protected]',
salary: 4500
},
{
_id: 6,
firstName: 'Amitabh',
lastName: 'B',
email: '[email protected]',
salary: 8500
}
]
7 method. The [
{
_id: 1,
firstName: 'John',
lastName: 'King',
email: '[email protected]',
salary: 5000
},
{
_id: 2,
firstName: 'Sachin',
lastName: 'T',
email: '[email protected]',
salary: 8000
},
{
_id: 3,
firstName: 'James',
lastName: 'Bond',
email: '[email protected]',
salary: 7500
},
{
_id: 4,
firstName: 'Steve',
lastName: 'J',
email: '[email protected]',
salary: 8500
},
{
_id: 5,
firstName: 'Kapil',
lastName: 'D',
email: '[email protected]',
salary: 4500
},
{
_id: 6,
firstName: 'Amitabh',
lastName: 'B',
email: '[email protected]',
salary: 8500
}
]
8 adds a new document if the matching document does not found.Example: Upsert
Copydb.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
0Output
db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
1In the above example, MongoDB adds a new document with new
[
{
_id: 1,
firstName: 'John',
lastName: 'King',
email: '[email protected]',
salary: 5000
},
{
_id: 2,
firstName: 'Sachin',
lastName: 'T',
email: '[email protected]',
salary: 8000
},
{
_id: 3,
firstName: 'James',
lastName: 'Bond',
email: '[email protected]',
salary: 7500
},
{
_id: 4,
firstName: 'Steve',
lastName: 'J',
email: '[email protected]',
salary: 8500
},
{
_id: 5,
firstName: 'Kapil',
lastName: 'D',
email: '[email protected]',
salary: 4500
},
{
_id: 6,
firstName: 'Amitabh',
lastName: 'B',
email: '[email protected]',
salary: 8500
}
]
9, because it cannot find a document with the db.employees.updateMany[{firstName:"Steve"}, { $set: {location: "USA"}}]
0.Update Operators
The following table lists the update operators which can be used with the
db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
4 and db.employees.updateMany[{ salary:7000 }, { $set: { salary:8500 }}]
2 methods.MethodDescription$currentDateSets the value of a field to current date, either as a Date or a Timestamp.$incIncrements the value of the field by the specified amount.$minOnly updates the field if the specified value is less than the existing field value.$maxOnly updates the field if the specified value is greater than the existing field value.$mulMultiplies the value of the field by the specified amount.$renameRenames a field.$setSets the value of a field in a document.$setOnInsertSets the value of a field if an update results in an insert of a document. Has no effect on update operations that modify existing documents.$unsetRemoves the specified field from a document.