findOne() (単一ドキュメントのクエリ)

最終更新:2026-10-09

findOne() (単一ドキュメントのクエリ)

findOne() はフィルタに一致する最初のドキュメントを、カーソルではなくドキュメントとして直接返します。例: `db.users.findOne({ name: 'Alice' })`。複数一致する場合は自然順序で最初のものを返し、一致しない場合は null を返します。カーソルの反復をスキップするため、_id やユーザー名などの一意フィールドでの検索に最適です。

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

📝 構文

db.<collection>.findOne(<filter>, <projection>)

⚙️ パラメータ

フィルター条件述語オブジェクト。クエリ演算子をサポートします。
射影任意。返すフィールドを制御します: 1=含める / 0=除外する。

戻り値:最初にマッチしたドキュメント。何もマッチしない場合は null。

▶ 例

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

// findOne: _id でユーザーを検索する
const user = db.users.findOne(
  { _id: ObjectId('64c8a1b20000000000000001') },
  { name: 1, age: 1, _id: 0 }
)
user

出力:

{ name: 'Alice', age: 21 }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

QfindOne は find().limit(1) と同じですか?
A似ていますが、findOne() はドキュメントを直接返すのに対し、find() は反復用のカーソルを返します。一意フィールドの検索では findOne() が好ましいです。
QfindOne は見つからない場合に何を返しますか?
Aエラーを投げず null を返します。通常は if (doc) { ... } のように使います。
QfindOne で一部のフィールドだけ返せますか?
Aできます。第2引数にプロジェクションを渡します。例: {name: 1}
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%