Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Query Modifiers

$max

$max

Nota

Obsoleto desde la v3.2

A partir de la v3.2, el operador $max está obsoleto en mongosh. En mongosh, utiliza cursor.max() en su lugar.

Especifique un valor $max para especificar el límite superior exclusivo para un índice específico a fin de restringir los resultados de la find(). El $max especifica el límite superior para todas las claves de un índice específico en orden.

mongosh proporciona el método contenedor max():

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

También puedes especificar $max con cualquiera de las dos formas:

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

Nota

Uso del índice

A partir de MongoDB 4.2, debe especificar explícitamente el índice particular con el método hint() para ejecutar max()/ $max con la siguiente excepción: no necesita hacer un hint si la consulta find() es una condición de igualdad en el campo _id { _id: <value> }.

Como max() requiere un índice en un campo y obliga a la consulta a usar dicho índice, puedes preferir el operador $lt para la consulta si es posible. Considera el siguiente ejemplo:

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

La query utiliza el índice en el campo age, incluso si el índice en _id podría ser mejor.

Si utiliza $max con $min para especificar un rango:

  • los límites del índice especificados en $min y $max deben referirse ambos a las claves del mismo índice.

  • el límite especificado por $max debe ser mayor que el límite especificado por $min.

    Cambiado en la versión 4.0.

Los operadores $min y $max indican que el sistema debería evitar la planificación normal de consultas. En su lugar, construyen un escaneo de índice donde los límites del índice se especifican explícitamente por los valores dados en $min y $max.

Advertencia

Si uno de los dos límites no se especifica, el plan del query será una exploración de índice que no está delimitada en un lado. Esto puede degradar el rendimiento en comparación con una query que no contenga ninguno de los operadores, o una que use ambos operadores para restringir más rigurosamente el escaneo del índice.

Los siguientes ejemplos utilizan mongosh envoltorios.

Considera las siguientes operaciones en una colección llamada collection que tiene un índice { age: 1 }:

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

Esta operación limita el query a aquellos documentos donde el campo age es menor que 100 y fuerza un plan del query que escanea el índice { age: 1 } desde MinKey hasta 100.

Usa $max solo o en combinación con $min para limitar los resultados a un rango específico para el mismo índice, como en el siguiente ejemplo:

Nota

A partir de MongoDB 4.0, el límite especificado por $max debe ser mayor que el límite especificado por $min.

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

Volver

$hint

En esta página