Definición
cursor.max()Importante
Método mongosh
Este es un método
mongosh. Esta no es la documentación deNode.jsni de otros métodos de controladores específicos de lenguajes de programación.En la mayoría de los casos, los métodos
mongoshfuncionan de la misma manera que los métodos tradicionalesmongométodos shell. Sin embargo, algunos métodos heredados no están disponibles enmongosh.Para la documentación heredada de
mongoshell, revisa la documentación de la versión correspondiente de MongoDB Server:Para los controladores de la API de MongoDB, consultar la documentación específica del controlador de MongoDB para cada lenguaje.
Especifica el límite superior exclusivo para un índice específico a fin de restringir los resultados de
find().max()proporciona una manera de especificar un límite superior en los índices de claves compuestas.
Parámetros
El método max() tiene el siguiente parámetro:
Parameter | Tipo | Descripción |
|---|---|---|
| Documento | El límite superior exclusivo para las claves de índice. |
El parámetro indexBounds tiene la siguiente forma de prototipo:
{ field1: <max value>, field2: <max value2> ... fieldN:<max valueN> }
Los campos corresponden a todas las claves de un índice en particular en orden.
Nota
Uso del índice
Tip
max() existe principalmente para soportar el proceso mongos (particionado) y es un contenedor del shell en torno al modificador de query $max.
Nota
Obsoleto desde la v3.2
A partir de la versión3.2, el operador $max está obsoleto en mongosh. En mongosh, use cursor.max() en su lugar.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Comportamiento
Interacción con la selección de índices
Debido a que max() requiere un índice en un campo, y obliga a la query a usar este índice, es posible que prefiera el operador $lt para la query si es posible. Considera el siguiente ejemplo:
db.products.find( { _id: { $in: [ 6, 7 ] } } ).max( { price: NumberDecimal("1.39") } ).hint( { price: 1 } )
La consulta utilizará el índice en el campo price, aunque el índice en _id pueda ser mejor.
Límites del índice
max() sin min()
Los operadores $min y $max indican que el sistema debe evitar la planificación normal de query. En su lugar, construyen un escaneo de índices 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.
Ejemplo
Nota
Para los siguientes ejemplos, crea una muestra de colección llamada products que contenga los siguientes documentos:
db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : NumberDecimal("1.99") }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : NumberDecimal("1.99") }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : NumberDecimal("1.29") }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : NumberDecimal("1.29") }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : NumberDecimal("1.29") }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : NumberDecimal("1.29") }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : NumberDecimal("2.99") }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : NumberDecimal("1.99") }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : NumberDecimal("0.99") }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") } ])
Crea los siguientes índices para la colección:
db.products.createIndexes( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ] )
Usando el orden del índice
{ item: 1, type: 1 },max()limita la query a los documentos que están por debajo del límite deitemigual aappleytypeigual ajonagold:db.products.find().max( { item: 'apple', type: 'jonagold' } ).hint( { item: 1, type: 1 } ) La query devuelve los siguientes documentos:
{ "_id" : 6, "item" : "apple", "type" : "cortland", "price" : NumberDecimal("1.29") } { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : NumberDecimal("1.99") } { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : NumberDecimal("1.99") } Usando el orden del índice
{ price: 1 },max()limita la query a los documentos que están por debajo del límite clave del índice depriceigual aNumberDecimal("1.99")ymin()limita la query a los documentos que están en o por encima del límite clave del índice depriceigual aNumberDecimal("1.39"):db.products.find().min( { price: NumberDecimal("1.39") } ).max( { price: NumberDecimal("1.99") } ).hint( { price: 1 } ) La query devuelve los siguientes documentos:
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") }