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

Cursors

Un cursor apunta a los resultados de una query. Los cursores te permiten iterar sobre los resultados de la base de datos un lote a la vez.

Los métodos find() y aggregate() devuelven un cursor con agrupar de resultados. Itere el cursor manualmente o utilice toArray() para acceder a los documentos. Para más información, consultar Iterar un cursor en mongosh.

Para colecciones limitadas, utiliza un cursor con seguimiento para recuperar documentos a medida que se insertan. Para más información, consulte cursores con seguimiento.

MongoDB cierra los cursores creados dentro de una sesión de cliente cuando:

  • El cliente agota el cursor.

  • Cierra manualmente el cursor.

  • Se termina manualmente la sesión.

  • La sesión expira.

cursorTimeoutMillis establece el tiempo de espera para cursores inactivos (por defecto: 10 minutos). MongoDB cierra cursores inactivos fuera de sesiones después de este tiempo. Retornar un grupo extiende el tiempo de espera. Usar killCursors para cerrar manualmente los cursores.

localLogicalSessionTimeoutMinutes establece el tiempo de espera de la sesión (por defecto: 30 minutos). Utilice refreshSessions para extender una sesión y killSessions para finalizarla.

Los controladores y mongosh crean sesiones implícitas para los cursores abiertos fuera de las sesiones explícitas.

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.

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.

Las operaciones find y aggregate se ejecutan hasta completar un lote. La consulta se pausa entonces. Esta consulta pausada es un cursor, identificado por un ID de cursor.

La base de datos devuelve el lote y el ID 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 mediante getMore. Utiliza cursor.objsLeftInBatch() para comprobar los resultados de los lotes restantes y cursor.hasNext() para obtener más resultados.

Los cursores devuelven resultados en agrupar, limitados por el tamaño máximo del documento BSON de 16 MiB. Usa cursor.batchSize() para establecer el límite de documentos. find() y aggregate() por defecto tienen un tamaño de lote de 101. Las operaciones getMore posteriores no tienen un límite por defecto, solo el tamaño de mensaje de 16 MiB.

Las consultas con una operación de ordenación sin un índice deben cargar todos los documentos en memoria antes de devolver los resultados.

db.serverStatus() devuelve las métricas del cursor en el campo metrics.cursor. Ver metrics.cursor.