Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$max

Nesta página

  • Definição
  • Comportamento
  • Exemplos
$max

Observação

Descontinuado desde a v3.2

A partir de v3.2, o operador $max é preterido em mongosh. Em mongosh, use cursor.max() em vez disso.

Especifique um valor $max para especificar o limite superior exclusivo para um índice específico para restringir os resultados de find(). O $max especifica o limite superior para todas as chaves de um índice específico em ordem.

mongosh fornece o método wrapper max() :

db.collection.find( { <query> } ).max( { field1: <max value>, ... fieldN: <max valueN> } )

Você também pode especificar $max com qualquer um dos dois formatos:

db.collection.find( { <query> } )._addSpecial( "$max", { field1: <max value1>, ... fieldN: <max valueN> } )
db.collection.find( { $query: { <query> }, $max: { field1: <max value1>, ... fieldN: <max valueN> } } )

Observação

Uso do índice

A partir do MongoDB 4.2, você deve especificar explicitamente o índice específico com o método hint() para executar max()/ $max com a seguinte exceção: você não precisa sugerir se a query find() for uma condição de igualdade no campo _id { _id: <value> }.

Como max() requer um índice em um campo e força a query a usar esse índice, você pode preferir o operador $lt para a query, se possível. Considere o seguinte exemplo:

db.collection.find( { _id: { $in: [ 6, 7 ] } } ).max( { age: 25 } ).hint( { age: 1 } )

A query usa o índice no campo age , mesmo que o índice em _id possa ser melhor.

Se você usar $max com $min para especificar uma faixa:

  • os limites do índice especificados em $min e $max devem referir-se às chaves do mesmo índice.

  • o limite especificado por $max deve ser maior que o limite especificado por $min.

    Alterado na versão 4.0.

Os operadores $min e $max indicam que o sistema deve evitar o planejamento normal de query. Em vez disso, eles constroem uma varredura de índice em que os limites do índice são explicitamente especificados pelos valores fornecidos em $min e $max.

Aviso

Se um dos dois limites não for especificado, o plano de query será uma varredura de índice sem limites em um dos lados. Isso pode prejudicar o desempenho em comparação com uma query que não contém nenhum operador ou uma que usa ambos os operadores para restringir mais fortemente a verificação de índice.

Os exemplos seguintes utilizam wrappers do mongosh .

Considere as seguintes operações em uma collection chamada collection que tem um índice { age: 1 }:

db.collection.find( { <query> } ).max( { age: 100 } ).hint( { age: 1 } )

Esta operação limita a query aos documentos onde o campo age é menor que 100 e força um plano de query que verifica o índice { age: 1 } de MinKey para 100.

Use $max sozinho ou em conjunto com $min para limitar os resultados a uma faixa específica do mesmo índice, como no exemplo a seguir:

Observação

A partir do MongoDB 4.0, o limite especificado por $max deve ser maior que o limite especificado por $min.

db.collection.find().min( { age: 20 } ).max( { age: 25 } ).hint( { age: 1 } )

Voltar

$hint