Definición
cursor.allowDiskUse()Importante
Método mongosh
Este es un método.
mongoshEsta no es la documentación deNode.jsni de otros métodos de controlador específicos del lenguaje de programación.En la mayoría de los casos, los métodos
mongoshfuncionan de la misma manera que los métodos tradicionalesmongoMétodos de shell. Sin embargo, algunos métodos heredados no están disponiblesmongoshen.Para la documentación heredada de
mongoshell, 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 especifiquecursor.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.
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
Admite grandes ordenamientos no indexados solamente
cursor.allowDiskUse() no afecta a las operaciones de ordenación que se responden mediante un índice ni a las operaciones de ordenación no indexadas ("de bloqueo") que requieren menos de 100 megabytes de memoria. Para obtener documentación más completa sobre las ordenaciones de bloqueo y el uso del índice de ordenación, consulte Uso de Ordenación e Índice.
Para comprobar si MongoDB debe realizar una ordenación por bloqueo, añada a la consulta cursor.explain() y revise los resultados de la explicación. Si el plan de consulta contiene una SORT etapa, MongoDB debe realizar una ordenación por bloqueo, sujeta al límite de memoria de 100 MB.
Ejemplo
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 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 reading.timestamp que no está incluido en un índice, MongoDB debe realizar una ordenación por bloqueo para devolver los resultados en el orden solicitado. Al especificar, MongoDB allowDiskUse() puede procesar la ordenación 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.