Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

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 de un controlador específico de un 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 0las operaciones que requieren más de 100 megabytes de memoria escriben automáticamente los datos en archivos temporales de forma predeterminada.

allowDiskUse() tiene la siguiente forma:

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

Consulta Uso de ordenamiento e índices 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 la compatibilidad de Atlas con 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 pipeline que requieren más de 100 megabytes de memoria para ejecutarse guardan archivos temporales en el disco por defecto.

Nota

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

Si allowDiskUseByDefault está true (este es el valor por defecto):

  • .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 está false:

  • .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 utilizan un índice o a las operaciones de ordenación sin índice («en memoria») que requieren menos de 100 megabytes de memoria. Para obtener documentación más completa sobre la ordenación en memoria y el uso de índices de ordenación, consulte Ordenación y uso de í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.

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 en cursor.sort() el reading.timestamp campo. La operación 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.