Um cursor aponta para os resultados de uma query. Os cursores permitem iterar sobre os resultados do banco de dados um lote de cada vez.
Casos de uso
Os find() aggregate() métodos e retornam um cursor com um lote de resultados. Itere o cursor manualmente ou use para acessar documentos. Para mais informações,toArray() consulte Iterar um cursor mongosh no.
Para coleções limitadas, use um cursor persistente para recuperar documentos à medida que eles são inseridos. Para obter mais informações, consulte Cursores tailable.
Comportamento
O MongoDB fecha os cursores criados dentro de uma sessão do cliente quando:
O cliente esgota o cursor.
Você fecha manualmente o cursor.
Você encerra manualmente a sessão.
A sessão expira.
cursorTimeoutMillis define o tempo limite para cursores ociosos (padrão: 10 minutos). O MongoDB fecha os cursores ociosos fora das sessões após esse horário. A devolução de um lote estende o tempo limite. Use para fechar os cursores killCursors manualmente.
localLogicalSessionTimeoutMinutes define o tempo limite da sessão (padrão: 30 minutos). Use para estender refreshSessions killSessions uma sessão e para encerrá-la.
Drivers e mongosh criam sessões implícitas para cursores abertos fora de sessões explícitas.
Atualizações simultâneas ao usar um cursor
Enquanto um cursor retorna documentos, outras operações podem ser executadas em segundo plano e afetar os resultados, dependendo do nível da preocupação de leitura . Para obter detalhes, consulte Isolamento de leitura, consistência e recência.
Resultados do cursor para bancos de mongos dados inexistentes
A partir do MongoDB 7.2, as query do aggregation pipeline que tentam usar reconhecimento de data center inexistentes em implantações do mongos retornam erros de validação.
Nas versões anteriores, essas query de agregação retornam cursor vazios.
Começar
Detalhes
As operaçõesfindeaggregatesão executadas até preencherem um lote. A query é pausada. Essa query pausada é um cursor, identificado por um ID de cursor.
O banco de dados retorna o ID do lote e do cursor. Os drivers e o armazenam mongosh isso em um cursor do lado do cliente . Se houver mais documentos, o cursor recuperará o próximo lote por meio getMore de. Use para verificar cursor.objsLeftInBatch() cursor.hasNext() os resultados restantes do lote e para verificar mais resultados.
Lotes de cursores
Os cursores retornam resultados em lotes, limitados pelo 16 tamanho máximo do documento BSON de MiB. Use para definir o limite do documento cursor.batchSize() . find() e aggregate() padronizam para um tamanho de lote 101 de. As getMore operações subsequentes não têm limite padrão, apenas o 16 tamanho da mensagem MiB.
Classificação
Queries com uma operação de classificação sem índice devem carregar todos os documentos na memória antes de retornar resultados.
Informações do cursor
db.serverStatus() retorna métricas de cursor no metrics.cursor campo.metrics.cursor Consulte.