Definição
$minO atualiza o valor do
$mincampo para um valor especificado se o valor especificado for menor que o valor atual do campo. O operador pode comparar valores de tipos diferentes, usando a$minordemde comparação BSON.{ $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.
Se o campo não existir, o operador define o campo para o valor $min especificado.
Para comparações entre valores de diferentes tipos, como um número e um nulo, o utiliza a$min ordemde comparação JSON.
A partir do MongoDB,5.0 mongod não gera mais um erro quando você usa um operador de atualização como $min com uma expressão de operando vazia ( { } ). Uma atualização vazia não resulta em nenhuma alteração e nenhuma entrada no oplog é criada (o que significa que a operação é um no-op).
Exemplos
Use $min para comparar números
Crie a coleção scores:
db.scores.insertOne( { _id: 1, highScore: 800, lowScore: 200 } )
O lowScore do documento atualmente tem o 200 valor. A operação a seguir usa para $min comparar 200 com o valor especificado 150 e atualiza o valor de lowScore para,150 pois 150 é menor 200 que:
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") }