noCursorTimeout() (カーソルのタイムアウト無効化)

最終更新:2026-10-09

noCursorTimeout() (カーソルのタイムアウト無効化)

noCursorTimeout() はカーソルのサーバー側アイドルタイムアウトを無効にします: `db.users.find().noCursorTimeout()`。デフォルトでは10分を超えてアイドルなカーソルは回収されますが、このフラグがあればカーソルを長く生存させられます。大きなバッチを遅く消費する処理に便利です。警告: 長時間生存するカーソルはサーバーリソースを保持するため、終わったら close() で手動クローズしてリークを避けてください。

カテゴリカーソル
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

db.<collection>.find(<filter>).noCursorTimeout()

戻り値:タイムアウトを無効にしたカーソル(チェーン可能)。

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// noCursorTimeout: 巨大なコレクションの長時間走査
const cursor = db.logs.find().noCursorTimeout().batchSize(100)
cursor.forEach(doc => processDoc(doc))
cursor.close()

出力:

(反復完了、出力なし)

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Qカーソルのデフォルトのタイムアウトは?
Aサーバーはアイドルカーソルを10分後に回収します。noCursorTimeout() はそれを無効にします。
QnoCursorTimeout で気を付けることは?
A終了時または早期退出時に必ず close() を呼びます。呼ばないとサーバーリソースがリークします。
QnoCursorTimeout はいつ必要ですか?
A1カーソルあたり10分を超える可能性のある遅いバッチジョブ。例: 数百万件のドキュメントを1件ずつクリーンアップする場合。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%