Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

配列の要素のインデックス作成方法

項目一覧

  • Atlas Search では、配列要素のインデックスはどのように作成されますか?
  • 配列内のオブジェクトにインデックスを付けるには
  • 制限事項を確認する
  • 配列要素のインデックスを定義する
  • 配列要素のインデックス作成例を試す

配列のインデックス作成において、Atlas Search では配列要素のデータ型のみが必要です。 インデックス定義でデータが配列に含まれていることを指定する必要はありません( [] )。

動的マッピングを有効にすると、Atlas Search は配列内の動的にインデックス付け可能なデータ型の要素を自動的にインデックス化します。 Atlas Search が動的にインデックスを作成するデータ型の詳細については、「データ型 」を参照してください。

Atlas UI のビジュアル エディターまたはJSON エディターを使用して、配列内の要素のインデックスを定義できます。

Atlas Search は、インデックス作成中にフィールドをフラット化することで、配列内のサポートされているデータ型をインデックス化します。

次のドキュメントを検討してください。

doc1 = { a: {b: [[<value1>, <value2>], <value3>] }}
doc2 = { a: {b: [<value1>, <value2>, <value3>] } }
doc3 = { a: [{ b: <value1>}, {b: <value2>}, {b: <value3>}] }

Atlas Search は、インデックス作成中に前述の配列を次のようにフラット化します。

LuceneDoc<n> = {"a.b":[<value1>,<value2>,<value3>]}

ドキュメントまたはオブジェクトの配列内のフィールドをクエリするには、 embeddedDocuments型を使用してオブジェクトの配列を含むフィールドをインデックスする必要があります。

Atlas Search は、フィールドタイプが配列に含まれている場合、または配列に含まれているドキュメントにある場合、次の Atlas Search フィールドタイプのインデックスを作成しません。

  • dateFacet

  • numberFacet

配列要素のインデックスを定義するには、Atlas UI で希望する構成方法を選択し、データベースとコレクションを選択します。

  1. [ Refine Your Indexをクリックしてインデックスを構成します。

  2. Field Mappingsセクションで、 Add Field MappingをクリックしてAdd Field Mappingウィンドウを開きます。

  3. [Customized Configuration] をクリックします。

  4. Field Nameドロップダウンから、インデックスする配列のフィールドを選択します。

  5. [ Data Typeドロップダウンをクリックし、インデックスを作成する配列要素のデータ型を選択します。 選択した型のプロパティを構成する方法の詳細については、選択した型のドキュメントを参照してください。

  6. [Add] をクリックします。

以下は、配列内の要素にインデックスを作成するための JSON構文です。 デフォルトのインデックス定義を以下のように置き換えます。

1{
2 "mappings": {
3 "dynamic": true|false,
4 "fields": {
5 "<array-field-name>": {
6 "type": "<array-element-data-type>"
7 }
8 }
9 }
10}

次のインデックス定義の例では、 sample_mflix.moviesコレクションを使用します。 サンプル データがすでにクラスターにロードされている場合は、Atlas UI のビジュアル エディターまたはJSONエディターを使用してインデックスを構成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択し、インデックスを微調整してフィールド マッピングを追加します。

次のインデックス定義は、string 値の配列を含むgenresフィールドをインデックス化します。

  1. Add Field Mappingウィンドウで、 Field Nameドロップダウンからgenresを選択します。

  2. Data Typeドロップダウンをクリックし、String を選択します。

  3. String Propertiesのデフォルト設定は保持します。

  4. [Add] をクリックします。

デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。

1{
2 "mappings": {
3 "fields": {
4 "genres": {
5 "type": "string"
6 }
7 }
8 }
9}

戻る

2 : フィールド マッピングの定義