Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Cursores persistentes

Nesta página

  • Casos de uso
  • Começar
  • Comportamento

Por padrão, o MongoDB fecha automaticamente um cursor quando o cliente esgota todos os resultados no cursor. No entanto, para capped collections , você pode usar um cursor persistente que permanece aberto depois que o cliente esgota os resultados no cursor inicial. Os cursor adaptável são conceitualmente equivalentes ao comando Unix com a opção modo" -f " tail . Depois que os clientes inserem documentos adicionais em uma collection limitada, o cursor persistente continua a recuperar os documentos.

Use cursores tailable em capped collection que têm altos volumes de gravação em que os índices não são práticos. Por exemplo, a replicação do MongoDB usa cursores tailable para rastrear o oplog primário.

Observação

Se sua query estiver em um campo indexado, use um cursor normal em vez de um cursor tailable. Acompanhe o último valor do campo indexado retornado pela query. Para recuperar os documentos recém-adicionados, faça uma query da collection novamente usando o último valor do campo indexado nos critérios de query. Por exemplo:

db.<collection>.find( { indexedField: { $gt: <lastvalue> } } )

Para criar um cursor persistente em mongosh, consulte cursor.tailable().

Para ver os métodos de cursor persistente para o driver, consulte a documentação do driver.

Considere os seguintes comportamentos relacionados aos cursores tailable:

  • Cursores tailable não usam índices. Eles devolvem documentos em ordem natural.

  • Como os cursores tailable não usam índices, a verificação inicial da query pode ser cara. Depois de inicialmente esgotar o cursor, as recuperações subsequentes dos documentos recém-adicionados são baratas.

  • Um cursor pode se tornar inválido se os dados em sua posição atual forem substituídos por novos dados. Por exemplo, isso pode acontecer se a velocidade da inserção de dados for mais rápida do que a velocidade da iteração do cursor.

Voltar

Planos de query