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 funcionan de la misma manera que los
mongoshheredados.mongoMétodos de shell. Sin embargo, algunos métodos heredados no están disponiblesmongoshen.Para obtener la documentación del shell heredado, consulte la documentación de la versión correspondiente de MongoDB
mongoServer:Para los controladores de la API de MongoDB, consultar la documentación específica del controlador de MongoDB para cada lenguaje.
allowDiskUse()permite a MongoDB usar archivos temporales en disco para almacenar datos que exceden el 100 límite de memoria del sistema de megabytes durante una ordenación por bloqueo. Si MongoDB requiere usar más de 100 megabytes de memoria del sistema para la ordenación por bloqueo, devuelve un error a menos que la consultacursor.allowDiskUse()especifique.allowDiskUse()tiene la siguiente forma:db.collection.find(<match>).sort(<sort>).allowDiskUse()
Consulte Uso de clasificación e índice para obtener más información sobre el bloqueo de operaciones de clasificación.
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 únicamente ordenaciones grandes no indexadas
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 100 límite de memoria de megabytes.
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 en cursor.sort() el reading.timestamp campo. También incluye para facilitar la cursor.allowDiskUse() 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.