配列のインデックス作成において、 MongoDB Search では配列要素のデータ型のみが必要です。インデックス定義でデータが配列([])に含まれていることを指定する必要はありません。
動的マッピングを有効にすると、MongoDB 検索するは配列内の動的にインデックス可能なデータ型の要素を自動的にインデックスします。MongoDB Search が動的にインデックスを作成するデータ型の詳細については、MongoDB Search フィールドタイプを参照してください。
Atlas UI のビジュアル エディターまたはJSON エディターを使用して、配列内の要素のインデックスを定義できます。
MongoDB Search では、配列要素のインデックスはどのように作成されますか。
MongoDB Search は、インデックス作成中にフィールドをフラット化することで、配列内のサポートされているデータ型をインデックス化します。
例
次のドキュメントを検討してください。
doc1 = { a: {b: [[<value1>, <value2>], <value3>] }} doc2 = { a: {b: [<value1>, <value2>, <value3>] } } doc3 = { a: [{ b: <value1>}, {b: <value2>}, {b: <value3>}] }
MongoDB Search は、インデックス作成中に前述の配列を次のようにフラット化します。
LuceneDoc<n> = {"a.b":[<value1>,<value2>,<value3>]}
配列内のオブジェクトにインデックスを付けるには
ドキュメントまたはオブジェクトの配列内のフィールドをクエリするには、 embeddedDocuments型を使用してオブジェクトの配列を含むフィールドをインデックスする必要があります。
配列要素のインデックスを定義する
配列要素のインデックスを定義するには、Atlas UI で希望する構成方法を選択し、データベースとコレクションを選択します。
インデックスを設定するには、 Refine Your Indexをクリックします。
Field Mappingsセクションで、 Add Field MappingをクリックしてAdd Field Mappingウィンドウを開きます。
[Customized Configuration] をクリックします。
Field Nameドロップダウンから、インデックスする配列のフィールドを選択します。
[ Data Typeドロップダウンをクリックし、インデックスを作成する配列要素のデータ型を選択します。 選択した型のプロパティを構成する方法の詳細については、選択した型のドキュメントを参照してください。
[Add] をクリックします。
The following is the JSON syntax for indexing elements inside an array. Replace the default index definition with the following.
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<array-field-name>": { 6 "type": "<array-element-data-type>" 7 } 8 } 9 } 10 }
配列要素のインデックス作成例を試す
The following index definition example uses the sample_mflix.movies collection. If you have the sample data already loaded on your cluster, you can use the Visual Editor or JSON Editor in the Atlas UI to configure the index. After you select your preferred configuration method, select the database and collection, and refine your index to add field mappings.
次のインデックス定義は、string 値の配列を含むgenresフィールドをインデックス化します。
Add Field Mappingウィンドウで、 Field Nameドロップダウンからgenresを選択します。
Data Typeドロップダウンをクリックし、String を選択します。
String Propertiesのデフォルト設定は保持します。
[Add] をクリックします。
デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。
1 { 2 "mappings": { 3 "fields": { 4 "genres": { 5 "type": "string" 6 } 7 } 8 } 9 }