tailable() (Cursor Tailable)
Última atualização: 2026-10-09
tailable() (Cursor Tailable)
tailable() marca um cursor como tailable, ex.: `db.logs.find().tailable()`. Em vez de fechar quando os dados acabam, um cursor tailable continua esperando novos documentos — usado para acompanhar logs e observar inserções antes da existência dos Change Streams. Ele exige uma coleção capped; em replica sets combina bem com a opção awaitData.
| Categoria | Cursor |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
db.<collection>.find(<filter>).tailable({ awaitData: <bool> })
⚙️ Parâmetros
| awaitData | Opcional. true aguarda novos dados em vez de retornar imediatamente. |
|---|
Retorno:O cursor marcado como tailable (encadeável).
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// tailable: continua lendo novas entradas de log
const cursor = db.logs.find()
.tailable({ awaitData: true })
while (cursor.hasNext()) {
print(cursor.next().msg)
}
Saída:
login ok
order created
payment received
📌 Notas
- Apenas coleções capped
- O cursor permanece aberto no fim, aguardando novos dados
- Para novos projetos, prefira Change Streams de watch() a cursors tailable
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QPara que servem os cursors tailable?
AEles continuam lendo novos dados de coleções capped — acompanhamento de logs e fluxos de monitoramento em tempo real — sem fechar no fim.
QQuais são as limitações de tailable?
AApenas coleções capped; novos projetos devem usar Change Streams de watch(), que são mais ricos e funcionam em coleções normais.
QComo tailable difere de watch?
Atailable() faz polling de novos dados em coleções capped; watch() usa o Change Stream do oplog, suportando coleções normais e mais tipos de eventos.