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 numberFacet タイプを使用すると、ファセット用に指定された representation を使用して数値をインデックスできます。BSON typesint32 、 、int64 の BSON typesdouble の数値をインデックスできます。

MongoDB Search only supports facet operator queries against fields indexed as the dateFacet type. To perform a normal search also on the same field, you must index the field as type number also.

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

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

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

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

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

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

To define the index for the dateFacet type, choose your preferred configuration method in the Atlas UI and then select the database and collection.

  1. インデックスを設定するには、 Refine Your Indexをクリックします。

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

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

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

    注意

    フィールド名の先頭にドル記号($)が含まれるフィールドにはインデックスを付けられません。

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

  6. Configure the field properties for the dateFacet type. To learn more, see Field Properties.

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

The following is the JSON syntax for the dateFacet type. Replace the default index definition with the following. To learn more about the fields, see Field Properties.

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

MongoDB 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フィールドをMongoDB Search numberFacet タイプとしてインデックス化し、 MongoDB 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"
}
]
}
}
}

facet コレクターの詳細とクエリの例については、「」を参照してください。

ファセット定義を使用してインデックスを作成し、facet コレクターを使用してそのインデックスをクエリする方法については、「 MongoDB Search でファセットの使用方法 」チュートリアルをご覧ください。