$max
On this page
Definition
$max
The
$max
operator updates the value of the field to a specified value if the specified value is greater than the current value of the field. The$max
operator can compare values of different types, using the BSON comparison order.The
$max
operator expression has the form:{ $max: { <field1>: <value1>, ... } } To specify a
<field>
in an embedded document or in an array, use dot notation.
Behavior
In MongoDB 4.4 and earlier, update operators process document fields in lexicographic order. See Update Operators Behavior for details.
If the field does not exists, the $max
operator sets the
field to the specified value.
Examples
Use $max
to Compare Numbers
Consider the following document in the collection scores
:
{ _id: 1, highScore: 800, lowScore: 200 }
The highScore
for the document currently has the value
800
. The following operation uses $max
to compare
the 800
and the specified value 950
and updates the value
of highScore
to 950
since 950
is greater than 800
:
db.scores.update( { _id: 1 }, { $max: { highScore: 950 } } )
The scores
collection now contains the following modified document:
{ _id: 1, highScore: 950, lowScore: 200 }
The next operation has no effect since the current value of the
field highScore
, i.e. 950
, is greater than 870
:
db.scores.update( { _id: 1 }, { $max: { highScore: 870 } } )
The document remains unchanged in the scores
collection:
{ _id: 1, highScore: 950, lowScore: 200 }
Use $max
to Compare Dates
Consider the following document in the collection tags
:
{ _id: 1, desc: "crafts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16.163Z") }
The following operation compares the current value of the
dateExpired
field, i.e.
ISODate("2013-10-01T16:38:16.163Z")
, with the specified date
new Date("2013-09-30")
to determine whether to update the
field:
db.tags.update( { _id: 1 }, { $max: { dateExpired: new Date("2013-09-30") } } )
The operation does not update the dateExpired
field:
{ _id: 1, desc: "decorative arts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16.163Z") }