Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

埋め込みドキュメントのフィールドに対してMongoDB Search クエリを実行する方法

このチュートリアルでは、ドキュメントの配列がそれ自体がネストされている場合でも、ドキュメントの配列内のフィールドに対してMongoDB Search クエリをインデックスて実行する方法を説明します。これらのフィールドに対するクエリを有効にするには、ドキュメントフィールドを embeddedDocuments 型としてインデックス。

このページのチュートリアルでは、以下のタイプの配列内のフィールドに対するクエリについて説明しています。

  • ドキュメントの配列。

  • ドキュメント内にあるドキュメントの配列。

  • ドキュメントの配列の中にあるドキュメントの配列。

開始する前に、クラスターが前提条件に記載されている要件を満たしていることを確認してください。

このセクションを展開すると、サンプル コレクション、インデックス、このチュートリアルで使用されているクエリの詳細が表示されます。

このチュートリアルでは、埋め込みドキュメントを対象にクエリを実行する方法を示す次のステップについて順を追って説明します。

  1. クラスターに埋め込みドキュメントを含む、schools という名前のサンプルコレクションを作成します。

  2. 次のパスで構成された embeddedDocuments フィールドを含むMongoDB Searchインデックスを設定します。

    • teachers フィールド

    • teachers.classes フィールド

    • clubs.sports フィールド

  3. $search クエリを実行して、schools コレクションに埋め込まれたドキュメントを検索します。この検索では、compoundembeddedDocument、および text を使用します。

  4. カウントを取得するには、埋め込みドキュメント フィールドに対して$searchMetaクエリを実行します。

schoolsサンプルコレクションには 3 つのドキュメントが含まれています。各ドキュメントには、学校の namemascot、各言語の「first」名前と last の名前、subjectgrade を含む classes とさまざまな が含まれています。 clubs が利用可能です。

このコレクションのインデックスは、配列内の次のドキュメントを指定しています。

サンプル クエリは、 schoolsコレクション内の埋め込みドキュメントを検索します。 クエリは、次のパイプライン ステージを使用します。

  • $search コレクションを検索します。

  • $projectを使用してコレクションのフィールドを除外し、結果にscoreという名前のフィールドを追加します。 ハイライトを有効にするクエリの場合、 $projectステージはハイライト情報を含むhighlightsという新しいフィールドも追加します。

チュートリアルでは、次のクエリについて説明します。

このクエリは、ドキュメント配列内のフィールドに対する検索を示しています。

teachersパスで最初の名前がJohnの指示を検索し、 Smithという姓の担当者を優先します。 また、 last名前フィールドの強調表示も有効になります。

このクエリは、ドキュメント内にネストされているドキュメントの配列内のフィールドに対する検索を示します。

これは、 clubs.sportsパスでdodgeballまたはfrisbeeのいずれかを実行する機会を提供するサポートが必要な学校を検索します。

このクエリでは、次の配列内のフィールドを検索する複合クエリが示されています。

  • ドキュメントの配列。

  • ドキュメントの配列内にネストされたドキュメントの配列。

クエリが teachers.classes パスで検索するのは、12th 年生の science クラスを教えている教師がいる学校で、Smith という名字の先生がそのクラスを教えている学校が優先されます。また、ドキュメントの teachers 配列内にネストされているドキュメントの classes 内の subject フィールドでハイライト機能も有効になります。

注意

また、クラスターのチュートリアルには、各バージョンでクラスを提供する学校の数を取得するための$searchMeta クエリも含まれています。

このチュートリアルでは、埋め込みドキュメントのフィールドに対するMongoDB Search クエリのサンプルを示します。これらのクエリの詳細については、「 このチュートリアルについて 」を参照してください。