tailable() (テイル可能カーソル)
最終更新:2026-10-09
tailable() (テイル可能カーソル)
tailable() はカーソルをテイル可能としてマークします。例: `db.logs.find().tailable()`。データが尽きたときに閉じるのではなく、テイル可能カーソルは新しいドキュメントを待ち続けます。ログの末尾追跡や、Change Streams が登場する前の挿入監視に使われました。キャップ付きコレクションが必要で、レプリカセットでは awaitData オプションとよく組み合わせます。
| カテゴリ | カーソル |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.find(<filter>).tailable({ awaitData: <bool> })
⚙️ パラメータ
| awaitData | 任意。true は即座に返す代わりに新しいデータを待ちます。 |
|---|
戻り値:tailable を指定したカーソル(チェーン可能)。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// tailable: 新しいログエントリを読み続ける
const cursor = db.logs.find()
.tailable({ awaitData: true })
while (cursor.hasNext()) {
print(cursor.next().msg)
}
出力:
login ok
order created
payment received
📌 注意事項
- キャップ付きコレクションのみ
- カーソルは末尾で開いたまま、新しいデータを待つ
- 新規プロジェクトでは、テイル可能カーソルより watch() の Change Streams を推奨
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Qテイル可能カーソルは何のために使いますか?
Aキャップ付きコレクションから新しいデータを読み続けます。リアルタイムのログ末尾追跡やモニタリングストリームで、末尾でも閉じません。
Qtailable の制限は?
Aキャップ付きコレクションのみです。新規プロジェクトでは watch() の Change Streams を使うべきです。より豊富で、通常のコレクションでも動作します。
Qtailable と watch の違いは?
Atailable() はキャップ付きコレクションの新しいデータをポーリングします。watch() は oplog の Change Stream を使い、通常のコレクションとより多くのイベントタイプをサポートします。