Definición
cursor.max()Importante
Método mongosh
Esta página documenta un método
mongosh. Esta no es la documentación para un driver específico de lenguaje, como Node.js.Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.
Especifica el límite superior exclusivo para un índice específico con el fin de restringir los resultados de
find(). proporciona una manera de especificar un límite superior en los índices de clavesmax()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 particular en orden.
Nota
Uso del índice
Tip
max() existe principalmente para dar soporte al proceso de mongos (particionado).
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: Decimal128("1.39") } ).hint( { price: 1 } )
La consulta utilizará el índice del campo price, incluso si el índice en _id puede ser mejor.
Límites del índice
Si utiliza max() con para especificar un min() rango:
Los límites de índice especificados en
min()y deben referirse a las claves del mismo índice.max()El límite especificado por debe ser mayor que el límite
max()especificadomin()por.
max() sin min()
Los min() métodos y indican que el sistema debe evitar la planificación normal de consultas. Construyen max() min() max()un escaneo de índice cuyos límites se especifican explícitamente mediante los valores dados en y.
Advertencia
Si no se especifica uno de los dos límites, el plan de consulta consistirá en un escaneo de índice sin límites en un lado. Esto puede reducir el rendimiento en comparación con una consulta que no contenga ningún operador o que utilice ambos para restringir con mayor precisión el escaneo de índice.
Ejemplo
Nota
Para los ejemplos siguientes, cree una colección de muestra denominada products que contenga los siguientes documentos:
db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : Decimal128("1.99") }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : Decimal128("1.99") }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : Decimal128("1.29") }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : Decimal128("1.29") }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : Decimal128("1.29") }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : Decimal128("1.29") }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : Decimal128("2.99") }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : Decimal128("1.99") }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : Decimal128("0.99") }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : Decimal128("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
{ item: 1, type: 1 }índice, limita la consulta a los documentos que están por debajo del límitemax()deitemigual aappleytypeigualjonagolda: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" : Decimal128("1.29") } { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : Decimal128("1.99") } { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : Decimal128("1.99") } Usando el orden del
{ price: 1 }índice, limita la consulta a los documentos que están por debajo del límitemax()de la clave del índicepriceigual aDecimal128("1.99")y limita la consulta a los documentos que están en o por encima del límite de la clavemin()del índicepriceigualDecimal128("1.39")a:Nota
El límite especificado por debe ser mayor que el límite
max()especificadomin()por.db.products.find().min( { price: Decimal128("1.39") } ).max( { price: Decimal128("1.99") } ).hint( { price: 1 } ) La query devuelve los siguientes documentos:
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : Decimal128("1.39") }