Cursores persistentes
Nesta página
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.
Casos de uso
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> } } )
Começar
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.
Comportamento
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.