Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Cursors

cursor.allowDiskUse()

cursor.allowDiskUse()

Importante

Método mongosh

Este es un método mongosh. Esta no es la documentación de Node.js ni de otros métodos de controladores específicos de lenguajes de programación.

En la mayoría de los casos, los métodos mongosh funcionan de la misma manera que los métodos tradicionales mongo métodos shell. Sin embargo, algunos métodos heredados no están disponibles en mongosh.

Para la documentación heredada de mongo shell, 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.

allowDiskUse() permite que MongoDB utilice archivos temporales en el disco para almacenar datos que superen el límite de memoria del sistema de 100 megabytes mientras se procesa un ordenamiento bloqueante. Si MongoDB requiere utilizar más de 100 megabytes de memoria del sistema para la operación de ordenamiento bloqueante, MongoDB devuelve un error a menos que la query especifique cursor.allowDiskUse().

allowDiskUse() tiene la siguiente forma:

db.collection.find(<match>).sort(<sort>).allowDiskUse()

Consulta Uso de Índice y Ordenamiento para obtener más información sobre el bloqueo de operaciones de ordenamiento bloqueante.

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.

cursor.allowDiskUse() no tiene ningún efecto en las operaciones de ordenación respondidas usando un índice o operaciones de ordenación no indexadas ("ordenamientos bloqueantes") que requieran menos de 100 megabytes de memoria. Para obtener documentación más completa sobre los ordenamientos bloqueantes y cómo utilizar el índice de ordenación, consulta Uso de orden y de índices.

Para verificar si MongoDB debe realizar una ordenación bloqueante, agregar cursor.explain() a la query y revisar los resultados de la explicación. Si el plan del query contiene una etapa SORT, MongoDB debe realizar una operación de ordenamiento bloqueante sujeta al límite de memoria de 100 megabytes.

Considerar una colección sensors con solo el índice por defecto sobre _id. La colección contiene documentos similares a los siguientes:

{
"sensor-name" : "TEMP-21425",
"sensor-location" : "Unit 12",
"reading" : {
"timestamp" : Timestamp(1580247215, 1),
"value" : 212,
"unit" : "Fahrenheit"
}
}

La siguiente operación incluye un cursor.sort() en el campo reading.timestamp. La operación también incluye cursor.allowDiskUse() para soportar la operación de ordenación.

db.sensors.find({"sensor-location" : "Unit 12"}).
sort({"reading.timestamp" : 1}).
allowDiskUse()

Dado que reading.timestamp no está incluido en un índice, MongoDB debe realizar una operación de ordenamiento bloqueante para devolver los resultados en el orden de ordenamiento solicitado. Al especificar allowDiskUse(), MongoDB puede procesar la operación de orden incluso si requiere más de 100 megabytes de memoria del sistema. Si allowDiskUse() se omitiera y la operación requiriera más de 100 megabytes de memoria del sistema, MongoDB devolvería un error.

Volver

cursor.addOption

En esta página