- UpdateOne
- db.<collection>.updateOne(filter, update)
- Example:
- db.<collection>.updateOne({_id: <id>}, {$set: {<field>: <Value>}})
- UpdateMany
- db.<collection>.updateOne(filter, update)
- Example:
- db.<collection>.updateMany({<field1>: <Value1>}, {$set: {<field2>: <Value2>}})
- $inc (Incrementing/Decrementing)
- Incrementing
- db.<collection>.updateOne({<field1>: <Value>}, {$inc: {<field2>: <n>}})
- Decrementing
- db.<collection>.updateOne({<field1>: <Value>}, {$inc: {<field2>: <-n>}})
- Increment/Decrement one field and update other
- db.<collection>.updateOne({<field1>: <Value1>}, {$inc: {<field2>: <n>}, $inc: {<field3>: <Value2>}})
- $min — if new value < old value then updates with new value
- db.<collection>.updateOne({<field1>: <Value>} {$min: {<field2>:<n>}})
- $max — if new value > old value then updates with new value
- db.<collection>.updateOne({<field1>: <Value>} {$max: {<field2>:<n>}})
- $max — multiplies value and updates
- db.<collection>.updateOne({<field1>: <Value>} {$mul: {<field2>:<n>}})
- $unset — removes field
- db.<collection>.updateMany({<field1>: <Value>}, {$unset: {<field2>: ""}})
- $rename — rename field
- db.<collection>.updateMany({}, {$rename: {<field2>: <new field name>}})
- if field exists, it will be renamed in all documents
- $upsert — takes boolean value, default is false, if set true add a document if not found
- db.<collection>.updateMany({<field1>: <Value1>}, {$set: {<field2>: <Value2>, <field3>: <Value3>}}, {upsert: true})
- Update embeded document inside document
- Wrong Way: db.<documents>.updateMany({$and: [{<field>.<subfield1>:<Value1>}, {<field>.<subfield2>: {$gte: n}}]}, {$set: {}})
- Right Way: db.<documents>.updateMany({<field>: {$elemMatch: {<subfield1>:<Value1>, <subfield2>: {$gte: n}}}}, {$set: {"<field>.$.<new subfield>": <Value2>}})
- Update all matched values from an array of embeded documents
- db.<collection>.updateMany({<field>: {$gt: <num>}}, {$inc: {"<field>.$[].frequency": <num>}})
- Updating field inside array of embeded documents
- db.<collection>.updateMany({<field>: {$gt: <num>}}, {$inc: {"<field>.$[]": <num>}})
- Updating field inside array
- When searching directly for a few embeded documents in an array, entire array is returned. If you want only embeded documents from array that match your need then use the following
- db.<collection>.updateMany({"<field>.<subfield>": {$gt: <n>}}, {$set: {"<field>.$[ele]<subfield>": <Value>}}, {arrayFilters: [{"ele.<subfield>": {$gt: <n>}}]})
- First filter and arrayFilters do not have to be equal, even though we used the same in the example
- First filter is to return documents containing the condition, and arrayFilters, like the name suggests, is to return the embeded documents in the array that matches the condition
- 'ele' in the example is a name given by us to refer each array element
- Adding embeded document or value to an array
- db.<collection>.updateOne({<field1>:<value1>}, {$push: {<array field>: <embeded document OR value>}})
- for adding one value or embeded document to the array
- db.<collection>.updateOne({<field1>:<value1>}, {$push: {<array field>: {$each: [<embeded documents OR values SEPARATED BY COMMA>]}}})
- for adding more than one values or embeded documents to the array
- db.<collection>.updateOne({<field1>:<value1>}, {$push: {<array field>: {$each: [<embeded documents OR values SEPARATED BY COMMA>], $sort: {<subfield>: <1 OR -1>}, $slice: <n>}}})
- sort sorts entire array before storing (optional)
- slice takes the first n values/embeded documents and stores (optional)
- Removing embeded document or value from an array
- db.<collection>.updateOne({<field1>:<value1>}, {$pull: {<array field>: {<subfield>: <value>}}})
- removes matching documents/values from array
- db.<collection>.updateOne({<field1>:<value1>}, {$pop: {<array field>: <1 for last element or -1 for first element>}}})
- removes first or last item from the array
- $addToSet
- db.<collection>.updateOne({<field1>:<value1>}, {$addToSet: {<array field>: <embeded document OR value>}})
- for adding one value or embeded document to the array only once. If you try again it won't work since it adds only unique values. If duplicate, it won't execute
- .replaceOne()
- Used to replace entire document with a new document but retain the id
If you are getting the error: Uncaught TypeError: firebase.database is not a function Resolve it by including firebase-database.js in your html page as follows: <!-- The core Firebase JS SDK is always required and must be listed first --> <script defer src = "https://www.gstatic.com/firebasejs/6.2.4/firebase-app.js" ></script> <script defer src = "https://www.gstatic.com/firebasejs/3.1.0/firebase-database.js" ></script> That is it. Let me know if this was helpful.

Comments
Post a Comment