Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

ファセット検索の数値のインデックス方法

項目一覧

  • numberFacetの制限を確認する
  • numberFacet 型のインデックスを定義する
  • numberFacetフィールド プロパティを構成する
  • numberFacet 型の例を試す

Atlas Search numberFacetタイプを使用すると、ファセット用に指定されたrepresentationを使用して数値をインデックスできます。 BSON types int32int64doubleの数値をインデックスできます。

Atlas Search は、 numberFacet型としてインデックス作成されたフィールドに対するファセットクエリのみをサポートします。 同じフィールドで通常の検索も実行するには、フィールドを タイプnumberとしてインデックスする必要があります。

埋め込まれたドキュメント内のstringフィールドをファセットするには、親フィールドをドキュメント型としてインデックス付けする必要があります。 埋め込まれたドキュメント内の string フィールドをファセットすると、Atlas Search は一致する親ドキュメントの数のみのファセット数を返します。

Atlas Search は、ファセットのnumber値を動的にインデックスしません。 ファセットのnumber値をインデックスするには、静的マッピングを使用する必要があります。 Atlas UI のビジュアル エディターまたはJSON エディターを使用して、 numberフィールドをnumberFacetタイプとしてインデックスできます。

次の制限が適用されます。

  • ファセット用にdecimal128のインデックスを作成することはできません。

  • ファセット用の配列、または配列に含まれるドキュメント内の数値のインデックスは作成できません。

  • embeddedDocumentsフィールドの一部としてインデックス付けされた数値フィールドをファセットすることはできません。

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ドロップダウンをクリックし、NumberFacet を選択します。

  6. numberFacet型のフィールド プロパティを構成します。 詳しくは、「 フィールド プロパティ」を参照してください。

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

以下は、numberFacet 型の JSON 構文です。デフォルトのインデックス定義を以下のように置き換えます。フィールドの詳細については、「フィールド プロパティ」を参照してください。

{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "numberFacet",
"representation": "int64|double",
"indexIntegers": true|false,
"indexDoubles": true|false
}
}
}
}

Atlas Search numberFacet型は次のパラメータを取ります。

オプション
タイプ
必要性
説明
default

type

string

必須

フィールドの型。 値はnumberFacetである必要があります。

representation

string

任意

インデックスを作成するフィールドのデータ型。 値は次のいずれかのBSON types になります。

  • int64 - 精度を失うことなく大きな整数をインデックス化する場合と、double 値を整数に丸める場合。 この型を使用して大きな double 値をインデックスすることはできません。

  • double - 丸められずに大きな double 値をインデックス化する場合。

詳細については、以下の例を参照してください。

double

indexIntegers

ブール値

任意

int32int64の型値をインデックス化するか省略するかを示します。 値はtrueまたはfalseです。 これとindexDoublesのいずれかはtrueである必要があります。

true

indexDoubles

ブール値

任意

double型の値をインデックス化するか省略するかを示します。 値はtrueまたはfalseです。 これとindexIntegersのいずれかはtrueである必要があります。

true

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

次のインデックス定義の例では、 yearフィールドを Atlas Search numberFacetタイプとしてインデックス化し、Atlas Searchファセット を使用してそのフィールドに対するクエリをサポートします。

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

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

  3. NumberFacet Propertiesのデフォルト値を受け入れます。

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

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

{
"mappings": {
"dynamic": false,
"fields": {
"year": {
"type": "numberFacet"
}
}
}
}

次のインデックス定義の例では、year フィールドをnumberFacet タイプとnumber タイプとしてインデックス化し、クエリの結果の次のタイプを返します。

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

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

  3. NumberFacet Propertiesのデフォルト値を受け入れます。

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

  5. ステップ1を繰り返し、 Data Typeドロップダウンから [ Number ] を選択します。

  6. Number Propertiesのデフォルト値を受け入れます。

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

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

{
"mappings": {
"dynamic": false,
"fields": {
"year": [
{
"type": "numberFacet"
},
{
"type": "number"
}
]
}
}
}

Tip

その他のインデックス定義例も参照してください

その他のインデックス定義の例については、次のページを参照してください。

戻る

数値