A El cursor apunta a los resultados de una consulta. Los cursores permiten iterar sobre los resultados de la base de datos, un lote a la vez.
Casos de uso
El find() Los aggregate() métodos y devuelven un cursor con un lote de resultados. Repita el cursor manualmente o use toArray() para acceder a los documentos. Para más información,consulte "Repita un cursor"mongosh en.
Para colecciones limitadas, utilice un cursor adaptable para recuperar los documentos a medida que se insertan. Para más información, consulte Cursores adaptables.
Comportamiento
MongoDB cierra los cursores creados dentro de una sesión de cliente cuando:
El cliente agota el cursor.
Cierra el cursor manualmente.
Finaliza la sesión manualmente.
La sesión expira.
cursorTimeoutMillis establece el tiempo de espera para los cursores inactivos (valor predeterminado: 10 minutos). MongoDB cierra los cursores inactivos fuera de las sesiones después de este tiempo. Devolver un lote extiende el tiempo de espera. Use para cerrar los cursores killCursors manualmente.
localLogicalSessionTimeoutMinutes establece el tiempo de espera de la sesión (predeterminado: 30 minutos). Use para extender refreshSessions killSessions una sesión y para finalizarla.
Conductores y mongosh crear sesiones implícitas para cursores abiertos fuera de sesiones explícitas.
Actualizaciones concurrentes mientras se utiliza un cursor
A medida que un cursor devuelve documentos, otras operaciones pueden ejecutarse en segundo plano y afectar los resultados, dependiendo del nivel de consistencia de lectura. Para más detalles, consulte Aislamiento de lectura, coherencia y actualidad.
Resultados del cursor para bases de datos mongos inexistentes
A partir de MongoDB 7.2, las consultas de la canalización de agregación que intentan utilizar bases de datos inexistentes en implementaciones de mongos devuelven errores de validación.
En versiones anteriores, estas consultas de agregación devolvían cursores vacíos.
Empezar
Detalles
find Las aggregate operaciones y se ejecutan hasta completar un lote. La consulta se pausa. Esta consulta pausada es un cursor,identificado por su ID.
La base de datos devuelve el ID del lote y del cursor. Los controladores y mongosh lo almacenan en un cursor del lado del cliente. Si existen más documentos, el cursor recupera el siguiente lote getMore mediante. Utilice para cursor.objsLeftInBatch() cursor.hasNext() comprobar los resultados del lote restante y para comprobar si hay más resultados.
Agrupaciones de cursores
Los cursores devuelven resultados en lotes, limitados por el 16 tamaño máximo de documento BSON de MiB. Use para establecer el límite del cursor.batchSize() documento. find() y aggregate() tienen un tamaño de lote predeterminado 101 de. Las getMore operaciones posteriores no tienen límite predeterminado, solo el 16 tamaño del mensaje de MiB.
Clasificación
Las consultas con una operación de clasificación sin índice deben cargar todos los documentos en la memoria antes de devolver resultados.
Información del cursor
db.serverStatus() devuelve las métricas del cursor en el metrics.cursor campo.metrics.cursor Véase.