Docs Menu

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

配列のインデックス作成において、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 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}