Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

$max

Nesta página

  • Definição
  • Comportamento
  • Exemplos
$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.

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 $max define o campo para o valor especificado.

A partir do MongoDB 5.0, mongod não gera mais um erro quando você usa um operador de atualização como $max 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).

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, 950

  • Atualiza 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 }

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")
}

Dica

Veja também:

← $min
$mul →