Summary: in this tutorial, you’ll learn how to use the MongoDB $min
operator in the update()
method to update the values of one or more fields.
Introduction to the MongoDB $min operator
The $min
operator is a field update operator that allows you to update the value of a field to a specified value if the specified value is less than (<
) the current value of the field.
The $min
operator has the following syntax:
{ $min: {<field1>: <value1>, ...} }
Code language: HTML, XML (xml)
If the current value of a field is greater than or equal to the value that you want to update, the $min
operator won’t update the value.
If the field doesn’t exist, the $min
operator creates the field and sets its value to the specified value.
MongoDB $min operator example
We’ll use the following products
collection:
db.products.insertMany([
{ "_id" : 1, "name" : "xPhone", "price" : 799, "releaseDate": ISODate("2011-05-14"), "spec" : { "ram" : 4, "screen" : 6.5, "cpu" : 2.66 },"color":["white","black"],"storage":[64,128,256]},
{ "_id" : 2, "name" : "xTablet", "price" : 899, "releaseDate": ISODate("2011-09-01") , "spec" : { "ram" : 16, "screen" : 9.5, "cpu" : 3.66 },"color":["white","black","purple"],"storage":[128,256,512]},
{ "_id" : 3, "name" : "SmartTablet", "price" : 899, "releaseDate": ISODate("2015-01-14"), "spec" : { "ram" : 12, "screen" : 9.7, "cpu" : 3.66 },"color":["blue"],"storage":[16,64,128]},
{ "_id" : 4, "name" : "SmartPad", "price" : 699, "releaseDate": ISODate("2020-05-14"),"spec" : { "ram" : 8, "screen" : 9.7, "cpu" : 1.66 },"color":["white","orange","gold","gray"],"storage":[128,256,1024]},
{ "_id" : 5, "name" : "SmartPhone", "price" : 599,"releaseDate": ISODate("2022-09-14"), "spec" : { "ram" : 4, "screen" : 5.7, "cpu" : 1.66 },"color":["white","orange","gold","gray"],"storage":[128,256]}
])
Code language: JavaScript (javascript)
The following example uses the $min
operator to update the price of the document _id 5:
db.products.updateOne({
_id: 5
}, {
$min: {
price: 699
}
})
Code language: PHP (php)
The query found a matching document. However, it didn’t update any:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 0,
upsertedCount: 0
}
Code language: CSS (css)
The reason is that the new value 699 is greater than the current value 599.
The following example uses the $min
operator to update the price of the document _id 5
:
db.products.updateOne({
_id: 5
}, {
$min: {
price: 499
}
})
Code language: PHP (php)
In this case, the price
field of the document _id 5
is updated to 499
:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
Code language: CSS (css)
This query verifies the update:
db.products.find({ _id: 5 }, { name: 1, price: 1 })
Code language: CSS (css)
Output:
[ { _id: 5, name: 'SmartPhone', price: 499 } ]
Code language: CSS (css)
Summary
- Use the
$min
operator to update the value of a field to a specified value when the specified value is less than the current field value.