$max
Nesta página
Definição
$max
O operador
$max
atualiza o valor do campo para um valor especificado se o valor especificado for maior que o valor atual do campo. O operador$max
pode comparar valores de diferentes tipos, usando a ordem de comparação BSON.A expressão do operador
$max
tem o formato:{ $max: { <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 existe, o operador $max
define o campo para o valor especificado.
A partir do MongoDB 5.0, mongod
não gera mais um erro ao usar um operador de atualização como $max
com uma expressão de operando vazia ( { }
). Uma atualização vazia não resulta em alteração e nenhuma entrada no oplog é criada (o que significa que é sem operação).
Exemplos
Use $max
para comparar números
Crie a coleção scores
:
db.scores.insertOne( { _id: 1, highScore: 800, lowScore: 200 } )
O highScore
do documento tem atualmente o valor 800. A seguinte operação:
Compara o
highscore
, 800, com o valor especificado, 950Atualiza
highScore
para 950, pois 950 é maior que 800
db.scores.updateOne( { _id: 1 }, { $max: { highScore: 950 } } )
A coleção scores
agora contém o seguinte documento modificado:
{ _id: 1, highScore: 950, lowScore: 200 }
A próxima operação não tem efeito desde o valor de highScore
, 950, é maior que 870:
db.scores.updateOne( { _id: 1 }, { $max: { highScore: 870 } } )
O documento permanece inalterado na coleção scores
:
{ _id: 1, highScore: 950, lowScore: 200 }
Use $max
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:16.163Z") } )
A seguinte operação compara o valor atual do campo dateExpired
, ISODate("2013-10-01T16:38:16.163Z")
, com a data especificada new Date("2013-09-30")
para determinar se deseja atualizar o campo:
db.tags.updateOne( { _id: 1 }, { $max: { dateExpired: new Date("2013-09-30") } } )
new Date("2013-09-30")
não é a data mais recente, então a operação não atualiza o campo dateExpired
:
{ _id: 1, desc: "decorative arts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16.163Z") }