- 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
🐍 Advance List List is widely used and it's functionalities are heavily useful. Append Adds one element at the end of the list. Syntax list1.append(value) Input l1 = [1, 2, 3] l1.append(4) l1 Output [1, 2, 3, 4] append can be used to add any datatype in a list. It can even add list inside list. Caution: Append does not return anything. It just appends the list. Count .count(value) counts the number of occurrences of an element in the list. Syntax list1.count(value) Input l1 = [1, 2, 3, 4, 3] l1.count(3) Output 2 It returns 0 if the value is not found in the list. Extend .count(value) counts the number of occurrences of an element in the list. Syntax list1.extend(list) Input l1 = [1, 2, 3] l1.extend([4, 5]) Output [1, 2, 3, 4, 5] If we use append, entire list will be added to the first list like one element. Extend, i nstead of considering a list as one element, it joins the two lists one after other. Append works in the following way. Input l1 = [1, 2, 3] l1.append([4, 5]) Output...
Comments
Post a Comment