Definição
$minThe
$minupdates the value of the field to a specified value if the specified value is less than the current value of the field. The$minoperator can compare values of different types, using the BSON comparison order.{ $min: { <field1>: <value1>, ... } } Para especificar um
<field>em um documento incorporado ou em uma array, use a notação de ponto.
Comportamento
A partir do MongoDB 5.0, os operadores de atualização processam campos de documento com nomes baseados em cadeia de caracteres em ordem lexicográfica. Os campos com nomes numéricos são processados em ordem numérica. Consulte Atualizar Comportamento de Operadores para detalhes.
If the field does not exist, the $min operator sets the field to the specified value.
For comparisons between values of different types, such as a number and a null, $min uses the BSON comparison order.
Starting in MongoDB 5.0, mongod no longer raises an error when you use an update operator like $min with an empty operand expression ( { } ). An empty update results in no changes and no oplog entry is created (meaning that the operation is a no-op).
Exemplos
Use $min para comparar números
Crie a coleção scores:
db.scores.insertOne( { _id: 1, highScore: 800, lowScore: 200 } )
The lowScore for the document currently has the value 200. The following operation uses $min to compare 200 to the specified value 150 and updates the value of lowScore to 150 since 150 is less than 200:
db.scores.updateOne( { _id: 1 }, { $min: { lowScore: 150 } } )
A coleção scores agora contém o seguinte documento modificado:
{ _id: 1, highScore: 800, lowScore: 150 }
A próxima operação não tem efeito desde o valor atual do campo lowScore, ou seja, 150, é menor que 250:
db.scores.updateOne( { _id: 1 }, { $min: { lowScore: 250 } } )
O documento permanece inalterado na coleção scores:
{ _id: 1, highScore: 800, lowScore: 150 }
Use $min para comparar datas
Crie a coleção tags:
db.tags.insertOne( { _id: 1, desc: "crafts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16Z") } )
A operação a seguir compara o valor atual do campo dateEntered, ou seja, ISODate("2013-10-01T05:00:00Z"), com a data especificada new Date("2013-09-25") para determinar se o campo deve ser atualizado:
db.tags.updateOne( { _id: 1 }, { $min: { dateEntered: new Date("2013-09-25") } } )
A operação atualiza o campo dateEntered:
{ _id: 1, desc: "crafts", dateEntered: ISODate("2013-09-25T00:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16Z") }