Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
Docs Menu
Docs Home
/ /

cursor.max() (método de mongosh)

cursor.max()

Importante

Método mongosh

Esta página documenta a mongosh Método. Esta no es la documentación de un controlador específico del 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 a fin de restringir los resultados de find(). proporciona una manera de especificar un límite superior en los índices de clavesmax() compuestas.

El método max() tiene el siguiente parámetro:

Parameter
Tipo
Descripción

indexBounds

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

Para usar un índice con el método max(), debes usar el método hint() para especificar el índice que deseas utilizar, excepto cuando la consulta find() sea una condición de igualdad en el campo _id.

Tip

max() existe principalmente para dar soporte al proceso de mongos (particionado).

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.

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.

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().

Los métodos min() y max() indican que el sistema debe evitar la planificación de consultas normal. Construyen un análisis de índice donde los límites del índice se especifican explícitamente por los valores proporcionados 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.

Nota

Debe especificar explícitamente el índice particular con el método hint() para ejecutar con la siguiente excepción:max() find() no _id { _id: <value> }necesita indicar si la consulta es una condición de igualdad en el campo.

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" : 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 índice { item: 1, type: 1 }, max() limita la query a los documentos que están por debajo del límite de item igual a apple y type igual a jonagold:

    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 índice { price: 1 }, max() limita la query a los documentos que están por debajo del límite clave del índice de price igual a Decimal128("1.99") y min() limita la query a los documentos que están en o por encima del límite clave del índice de price igual a Decimal128("1.39"):

    Nota

    El límite especificado por debe ser mayor que el límite max() especificado min() 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") }

Volver

cursor.map

En esta página