hasNext() (次のドキュメントの有無の確認)
最終更新:2026-10-09
hasNext() (次のドキュメントの有無の確認)
hasNext() はカーソルにまだ次のドキュメントがあるかを報告します: `while (db.users.find().hasNext()) { ... }`。カーソルを進めずに確認し、終端では false を返します。安全な反復のため next() と組み合わせる標準的な方法です。カーソルループを駆動する定番です。
| カテゴリ | カーソル |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.find(<filter>).hasNext()
戻り値:ブール値。次のドキュメントが存在する場合は true、尽きている場合は false。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// hasNext: カーソル全体を安全に反復する
const cursor = db.users.find({ age: { $gte: 18 } })
while (cursor.hasNext()) {
print(cursor.next().name)
}
出力:
Alice
Bob
Cara
📌 注意事項
- hasNext() はカーソルを進めない
- 使い果たすと false を返す
- 生の next() より安全で、カーソル終端のエラーを避けられる
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
QhasNext と next はどう連携しますか?
A古典的なループ: while (cursor.hasNext()) { const doc = cursor.next() }。先に確認してから取得します。
QhasNext はカーソルを消費しますか?
Aいいえ。確認するだけで、カーソルの位置は変わりません。
Q空のカーソルで hasNext は何を返しますか?
Afalse を返します。ループ本体は実行されず、エラーも発生しません。