AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

ドキュメントを読む

MongoDB では、読み取り操作はデータベースのクエリで構成されます。このページでは例を示しています。

次の方法で、 MongoDB内のドキュメントをクエリできます。


➤ 右上の [言語選択] ドロップダウンメニューを使用して、以下の例の言語を設定するか、MongoDB Compass を選択します。


このページでは、db.collection.find() メソッドを使用した、mongosh. でのクエリ操作の例を取り上げます。

このページの例では、sample_mflix データセット のデータを使用しています。自己管理型 MongoDB 配置にこのデータセットをロードする方法の詳細については、「サンプル データセットのロード」を参照してください。サンプル データベースに何らかの変更を加えた場合は、今ページの例を実行するには、データベースを削除して再作成する必要がある可能性があります。

コレクション内のすべてのドキュメントを選択するには、空のドキュメントをクエリフィルター パラメーターとして find メソッドに渡します。クエリフィルター パラメータによって選択基準が決定されます。

db.movies.find( {} )

この操作では、次の SQL ステートメントに対応する空のクエリ述語{}が使用されます。

SELECT * FROM movies

等価条件を指定するには、クエリフィルター ドキュメントで <field>:<value> 式を使用します。

{ <field1>: <value1>, ... }

次の例では、sample_mflix.moviesコレクションから、rated が "PG-13" に等しいすべてのドキュメントを選択しています。

db.movies.find( { rated: "PG-13" } )

この操作では、次の SQL ステートメントに対応する{ rated: "PG-13" }のクエリ述語が使用されます。

SELECT * FROM movies WHERE rated = "PG-13"

クエリフィルター ドキュメントでは、クエリ演算子を使用して次の形式で条件を指定できます。

{ <field1>: { <operator1>: <value1> }, ... }

次の例では、sample_mflix.movies コレクションから、rated が "G" または "PG-13" に等しいすべてのドキュメントを検索します。

db.movies.find( { rated: { $in: [ "G", "PG-13" ] } } )

注意

$orこのクエリには$in $or演算子を使用できますが、同じフィールドで等価性チェックを実行する場合は、 ではなく 演算子を使用します。

この操作では、次の SQL ステートメントに対応する{ rated: { $in: [ "G", "PG-13" ] } }のクエリ述語が使用されます。

SELECT * FROM movies WHERE rated in ("G", "PG-13")

MongoDBクエリ演算子の完全なリストについては、クエリ述語を参照してください。

複合クエリは、コレクション内のドキュメントの複数のフィールドに条件を指定することができます。暗黙的に、論理的な AND 結合が複合クエリの各条件句を接続し、すべての条件に一致するドキュメントがコレクションから選択されます。

次の例では、sample_mflix.movies コレクション内で、rated "G"が に等しく、かつruntime が($lt ) より小さいすべてのドキュメントを検索します。90

db.movies.find( { rated: "G", runtime: { $lt: 90 } } )

この操作では、次の SQL ステートメントに対応する{ rated: "G", runtime: { $lt: 90 } }のクエリ述語が使用されます。

SELECT * FROM movies WHERE rated = "G" AND runtime < 90

その他の MongoDB 比較演算子については、「比較演算子」を参照してください。

$or 演算子を使用して、論理的な OR 結合で各条件句を結合する複合クエリを指定します。クエリは、少なくとも 1 つの条件に一致するドキュメントを選択します。

次の例では、sample_mflix.movies コレクション内で、rated "G"が に等しい、またはruntime が($lt ) より小さいすべてのドキュメントを検索する。90

db.movies.find( { $or: [ { rated: "G" }, { runtime: { $lt: 90 } } ] } )

この操作では、次の SQL ステートメントに対応する{ $or: [ { rated: 'G' }, { runtime: { $lt: 90 } } ] }のクエリ述語が使用されます。

SELECT * FROM movies WHERE rated = "G" OR runtime < 90

注意

比較演算子を使用するクエリは、クエリ述語における型のブラケット処理の対象となります。

次の例では、複合クエリドキュメントは、sample_mflix.movies rated"G"が に等しく、かつruntime が( ) より小さい、$lt または が90 titleの文字で始まる いずれか の条件が満たされるT コレクション内のすべてのドキュメントを選択します。:

db.movies.find( { rated: "G", $or: [ { runtime: { $lt: 90 } }, { title: /^T/ } ]} )

この操作では、次のクエリ述語を使用します。

{ rated: 'G', $or: [ { runtime: { $lt: 90 } }, { title: { $regex: '^T' } } ]}

これは、次の SQL ステートメントに対応します。

SELECT * FROM movies WHERE rated = "G"AND ( runtime < 90 OR title LIKE "T%")

注意

MongoDB は、文字列パターンの一致を実行するための正規式 $regex のクエリをサポートしています。

正規表現の構文は、mongosh とドライバーで異なります。mongosh では JavaScript 正規表現リテラルが使用されます(例:{ title: /^T/ })。ドライバーでは同等の $regex 演算子が使用されます(例:{ title: { $regex: '^T' } })。

この例では、映画のサンプルデータセットを使用します。サンプルデータセットをMongoDB Atlas配置にロードするには、サンプル データのロードを参照してください。

MongoDB Atlasでクエリのフィールドをプロジェクトには、次の手順に従います。

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Database見出しの下のClustersをクリックします。

    [ Clusters (クラスター) ] ページが表示されます。

2
  1. サンプル データを含むクラスターで、[ Browse Collections ] をクリックします。

  2. 左側のナビゲーション ペインで、sample_mflix データベースを選択します。

  3. movies コレクションを選択します。

3

Filter フィールドにクエリフィルター ドキュメントを指定します。クエリフィルター ドキュメントは、クエリ演算子を使用して検索条件を指定します。

次のクエリフィルター ドキュメントを Filter 検索バーにコピーします。

{ year: 1924 }
4

クエリは、yearフィールドが1924 と一致する sample_mflix.moviesコレクション内のすべてのドキュメントを返します。

その他のクエリ例については、次を参照してください。

db.collection.find() メソッドは、一致するドキュメントにカーソルを返します。

カーソルによってドキュメントが返されると、読み取り保証 (read concern)のレベルによっては、バックグラウンドで他の操作が実行され、結果に影響が出る可能性があります。 詳細については、「 読み取り分離、整合性、最新性について 」を参照してください。

レプリカセット およびレプリカセットシャードへの読み取りの場合、読み取り保証 (read concern)により、クライアントは読み取りの分離レベルを選択できます。詳しくは、「 読み取り保証(read concern) 」を参照してください。

MongoDBドライバーまたは mongosh を使用して検索操作を実行すると、MongoDB はクエリ結果を管理する カーソル を返します。クエリ結果はドキュメントの配列として返されません。

カーソル内でドキュメントを反復処理する方法については、ドライバーのドキュメントを参照してください。mongosh を使用している場合は、 mongosh でのカーソルの反復処理 を参照してください。

次の方法でコレクションからドキュメントを読み取ることもできます。

注意

db.collection.findOne() メソッドは、1 の制限で db.collection.find() と同じ操作を実行します。