Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

Cursors

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.

Os métodos find() e aggregate() retornam um cursor com um lote de resultados. Itere o cursor manualmente ou use toArray() para acessar documentos. Para mais informações, consulte Iterar um cursor no mongosh.

Para coleções limitadas, use um cursor persistente para recuperar documentos à medida que eles são inseridos. Para obter mais informações, consulte Cursores persistentes.

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 killCursors para fechar os cursores manualmente.

localLogicalSessionTimeoutMinutes define o tempo limite da sessão (padrão: 30 minutos). Use refreshSessions para estender uma sessão e killSessions para encerrá-la.

Drivers e mongosh criam sessões implícitas para cursores abertos fora de sessões explícitas.

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.

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.

As operações find e aggregate sã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 mongosh armazenam isso em um cursor do lado do cliente . Se houver mais documentos, o cursor recuperará o próximo lote por meio de getMore. Use cursor.objsLeftInBatch() para verificar os resultados restantes do lote e cursor.hasNext() para verificar mais resultados.

Os cursores retornam resultados em lotes, limitados pelo tamanho máximo do documento BSON de 16 MiB. Use cursor.batchSize() para definir o limite do documento. find() e aggregate() padronizam para um tamanho de lote de 101. As operações getMore subsequentes não têm limite padrão, apenas o tamanho da mensagem 16 MiB.

Queries com uma operação de classificação sem índice devem carregar todos os documentos na memória antes de retornar resultados.

db.serverStatus() retorna métricas de cursor no campo metrics.cursor. Consulte metrics.cursor.

Voltar

Formas de query

Nesta página