This post discusses common update syntax for mongodb with a Demo.
Syntax
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
- Query : Query Selectors
- Update : Modifications to apply
- Upsert : true means insert if document does not match. False means do not insert if document does not match. Default value is false.
- Multi : true means update all matching document, false means update single document. Default value is false.
- writeConcern : Read Official Documentation.
- collation : Specify collation to use for the update operation.
Initialize Person Collection
Create person collection and insert some records
> db.createCollection("person");
> db.person.insert([
{ "firstName" : "Hiral", "lastName" : "Patel", "Profession" : "Developer" },
{ "firstName" : "Rajesh", "lastName" : "Patel", "Profession" : "Musician" },
{ "firstName" : "Sandeep", "lastName" : "Patel", "Profession" : "Player" },
{ "firstName" : "Harry", "lastName" : "Patel", "Profession" : "Actor" },
{ "firstName" : "Sandeep", "lastName" : "Trivedi", "Profession" : "Electician" }
]);
Update/Replace a document
Update/Replace a document with a lastName = Patel. Following query will replace the first matching document with modified fields.
> db.person.update({"lastName": "Patel"}, {"Website" : "www.smoothprogramming.com"});
> db.person.find({}, {_id:0})
{ "Website" : "www.smoothprogramming.com" }
{ "firstName" : "Rajesh", "lastName" : "Patel", "Profession" : "Musician" }
{ "firstName" : "Sandeep", "lastName" : "Patel", "Profession" : "Player" }
{ "firstName" : "Harry", "lastName" : "Patel", "Profession" : "Actor" }
{ "firstName" : "Sandeep", "lastName" : "Trivedi", "Profession" : "Electician" }
Update specific fields of a Document
Use $set
to update a specific fields of a document. Following query will update provided fields for matching document.
> db.person.update({"firstName" : "Rajesh"}, {$set : {"Website" : "www.rajeshmusic.com"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.person.find({}, {_id:0})
{ "Website" : "www.smoothprogramming.com" }
{ "firstName" : "Rajesh", "lastName" : "Patel", "Profession" : "Musician", "Website" : "www.rajeshmusic.com" }
{ "firstName" : "Sandeep", "lastName" : "Patel", "Profession" : "Player" }
{ "firstName" : "Harry", "lastName" : "Patel", "Profession" : "Actor" }
{ "firstName" : "Sandeep", "lastName" : "Trivedi", "Profession" : "Electician" }
Update multiple documents
Set multi = true to update multiple matching documents.
> db.person.update({"lastName" : "Patel"}, {$set : {"Gender" : "Male"}}, {multi : true});
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
> db.person.find({}, {_id:0})
{ "Website" : "www.smoothprogramming.com" }
{ "firstName" : "Rajesh", "lastName" : "Patel", "Profession" : "Musician", "Website" : "www.rajeshmusic.com", "Gender" : "Male" }
{ "firstName" : "Sandeep", "lastName" : "Patel", "Profession" : "Player", "Gender" : "Male" }
{ "firstName" : "Harry", "lastName" : "Patel", "Profession" : "Actor", "Gender" : "Male" }
{ "firstName" : "Sandeep", "lastName" : "Trivedi", "Profession" : "Electician" }
Conclusion
MongoDB update can achieve desire update behaviour if correct settings are provided.