find() (ドキュメントのクエリ)
最終更新:2026-10-09
find() (ドキュメントのクエリ)
find() は条件に一致するドキュメントをクエリし、カーソル(Cursor)を返します。最も基本的な読み取りメソッドで、第1引数がクエリの述語、第2引数が返すフィールドを制御するプロジェクションです。カーソルは遅延評価され、データは反復処理(toArray/forEach/next)した時点で取得されます。
| カテゴリ | 読み取り |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.find(<query>, <projection>)
⚙️ パラメータ
| クエリ条件 | クエリ演算子をサポートする述語オブジェクト。省略時はすべてに一致します。 |
|---|---|
| 射影 | 任意。返すフィールドを制御します: 1=含める / 0=除外する。 |
戻り値:カーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// find: 20歳より上のユーザーを名前のみ取得する
const cursor = db.users.find(
{ age: { $gt: 20 } },
{ name: 1, age: 1, _id: 0 }
)
cursor.forEach(u => print(u.name))
出力:
Alice
Bob
📌 注意事項
- カーソルを返す(配列ではない)。toArray()/forEach()/next() で消費する
- プロジェクションは 1 と 0 を混在できない(_id を除く)
- find() は読み取り専用で、ドキュメントは変更されない
- mongosh では素の find() は最初の20件を表示する。さらにページングするには入力して続行する
🏷️ 関連タグ
💡 関連ケース
ドキュメント削除とNode.js入門
Express/Mongoose統合:アプリケーションアーキテクチャ
Mongoose応用パターン:パフォーマンスと柔軟性
Mongooseスキーマ設計と埋め込み vs 参照
パフォーマンスチューニングと監視
RESTful API設計:CRUD操作とバリデーション
📚 関連チュートリアル
❓ よくある質問
Qfind() は配列を返しますか?
Aいいえ、カーソルを返します。配列が必要な場合は .toArray() で変換(または反復)してください。
Qfind() は何を返しますか?
Afind() は配列ではなくカーソルを返します。toArray() で変換するか、forEach/next で反復します。カーソルは遅延評価され、読み進めるたびにサーバーからドキュメントを取得します。
Qfind() の第2引数は何をしますか?
Aプロジェクションです。1 はフィールドを含め、0 は除外します(混在は _id のみ許可)。ネットワークのペイロードと結果サイズを減らすために使います。