Docs Menu
Docs Home
/ /
Cursors

cursor.allowDiskUse() (método mongosh)

cursor.allowDiskUse()

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.

Utilice para permitir o prohibir la escritura de archivos temporales en el disco cuando una etapa de la canalización supere allowDiskUse() el 100 límite de megabytes. A partir de MongoDB,6.0 las operaciones que requieren más de 100 megabytes de memoria escriben datos automáticamente en archivos temporales de forma predeterminada.

allowDiskUse() tiene la siguiente forma:

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

Ver Ordenar e indexar Utilice para obtener más información sobre las operaciones de ordenamiento en memoria.

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.

A partir de MongoDB 6.0, las etapas de la canalización que requieren más de 100 megabytes de memoria para ejecutarse escriben archivos temporales en el disco de manera predeterminada.

Nota

Antes de MongoDB 6.0, .allowDiskUse(false) y .allowDiskUse(true) tenían el mismo efecto. En MongoDB 6.0, tanto mongosh como el shell heredado mongo se comportan de la siguiente manera:

Si allowDiskUseByDefault es true (este es el valor predeterminado):

  • .allowDiskUse() no tiene ningún efecto adicional

  • .allowDiskUse(true) no tiene ningún efecto adicional

  • .allowDiskUse(false) prohíbe que la query escriba archivos temporales en el disco

Si allowDiskUseByDefault falsees:

  • .allowDiskUse() Permite escribir archivos temporales en el disco

  • .allowDiskUse(true) Permite escribir archivos temporales en el disco

  • .allowDiskUse(false) no tiene ningún efecto adicional

cursor.allowDiskUse() no afecta a las operaciones de ordenación que se responden mediante un índice o a las operaciones de ordenación no indexadas (en memoria) que requieren menos de 100 megabytes de memoria. Para obtener documentación más completa sobre las ordenaciones en memoria y el uso de índices de ordenación, consulte Ordenación e índices.

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

Considere una colección sensors con solo el índice predeterminado _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 en cursor.sort() el reading.timestamp campo. También pasa false a para impedir que la consulta escriba archivos temporales en cursor.allowDiskUse() el disco.

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

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

Volver

cursor.addOption

En esta página