Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

効率的なフィルタリングとソートのためのstringフィールドのインデックス方法

項目一覧

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

Atlas Search tokenタイプを使用して、Atlas Search 結果を並べ替えるための stringフィールドをインデックス化できます。 次に、クエリで $search sortオプションを使用して、結果をインデックス付きフィールドでソートできます。 詳しくは、「 Atlas Search結果の並べ替え」を参照してください。 Atlas Search tokenタイプを使用してstringフィールドをインデックスし、 $vectorSearchクエリが分析するデータを事前フィルタリングすることもできます。 詳細については、「 Atlas Vector Search の概要 」を参照してください。

次の演算子を使用してstringフィールドに対してクエリを実行するには、フィールドをAtlas Search token タイプとしてインデックスする必要があります。

  • equals

  • in

  • 範囲

詳細については、それぞれの演算子のドキュメントを参照してください。

フィールドをtokenタイプとしてインデックス化すると、Atlas Search は string 内のタームを単一のトークン(検索可能なターム)としてインデックス化し、効率的なフィルタリングやソート操作のために列指向ストレージに保存します。 正規化を使用してトークンを変換できます。 デフォルトでは、正規表現はnoneに設定されているため、Atlas Search は元の形式で文字列をインデックス化します。

Atlas Search string型とtoken型の大きな違いは、Atlas Search ではstring型としてインデックス付けされたフィールド用に 1 つ以上のトークンが作成されるのに対し、Atlas Search ではtoken型としてインデックス付けされたフィールドでは 1 つのトークンのみが作成されることです。

tokenフィールドタイプとしてインデックス付けされた string が 8181 文字を超える場合、Atlas Search はインデックスを作成する前にその string を 8181 文字に切り捨てます。

フィールドをtoken型としてインデックス化する場合、テキストフレーズなどの演算子を使用してテキスト値をクエリするには、そのフィールドもstring型としてインデックス化する必要があります。 次の演算子では、フィールドのテキスト値をクエリするために、フィールドをstring型としてインデックスする必要もありません。

embeddedDocuments型としてインデックス作成されたフィールドの子をtoken型としてインデックスすることはできません。

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

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

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

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

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

    注意

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

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

  6. (任意) フィールドのToken Propertiesを展開して構成します。 詳しくは、「 tokenフィールド プロパティの構成 」を参照してください。

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

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

{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "token",
"normalizer": "lowercase | none"
}
}
}
}

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

オプション
タイプ
必要性
説明
default
type
string
必須
このフィールド型を識別する、人間が判読できるラベル。値はtokenでなければなりません。
normalizer
string
任意

フィールド値で実行する変換のタイプ。 値は次のいずれかになります。

  • lowercase - string フィールドのテキスト値を小文字に変換します。

  • none - 変換を実行しない場合。

このオプションを明示的に設定しない場合、デフォルトはnoneになります。

none

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

次のインデックス定義では、 titleフィールドの string 値を Atlas Search tokenタイプとしてインデックス化し、フィールド値をlowercaseに変換します。これにより、次の操作が可能になります。

  • titleフィールドで、 normalizerによって指定された大文字と小文字を区別しないソートを実行します。

  • 次の演算子を使用して、 titleフィールドで完全一致クエリを実行します。

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

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

  3. [ Token Propertiesを展開し、 Normalizerドロップダウンから [ lowercase ] を選択します。

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

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

{
"mappings": {
"dynamic": false,
"fields": {
"title": {
"type": "token",
"normalizer": "lowercase"
}
}
}
}

次のインデックス定義では、 genresフィールドをstring型とtoken型としてインデックス化し、次の結果を返します。

  • Atlas Search 演算子 は、 textphrase 、その他の演算子を使用したクエリで、 genresフィールドでテキスト検索を実行します。

  • genresフィールドで$search並べ替えオプションを使用してクエリの結果を並べ替えました。

  • Atlas Search 演算子を使用するクエリの完全一致は、 、、 範囲 などです。

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

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

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

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

  5. String Propertiesのデフォルト設定を確認し、 [ Add ] をクリックします。

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

{
"mappings": {
"dynamic": false,
"fields": {
"genres": [{
"type": "string"
},
{
"type": "token"
}]
}
}
}

戻る

stringFacet