Definição
$maxObservação
Descontinuado desde a v3.2
A partir de3.2 v, o operador
$maxmongoshé preterido no . Em ,mongoshusecursor.max().Especifique um valor
$maxpara especificar o limite superior exclusivo para um índice específico para restringir os resultados defind(). O$maxespecifica o limite superior para todas as chaves de um índice específico em ordem.mongoshfornece o método wrappermax():db.collection.find( { <query> } ).max( { field1: <max value>, ... fieldN: <max valueN> } ) Você também pode especificar
$maxcom 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> } } )
Comportamento
Interação com a seleção de índices
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.
Limites do Índice
$max sem $min
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.
Exemplos
Os exemplos seguintes utilizam wrappers do mongosh .
Especifique o limite superior exclusivo
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.
Usar com $min
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
db.collection.find().min( { age: 20 } ).max( { age: 25 } ).hint( { age: 1 } )