Atlas Search インデックスに保存されているソース フィールドの定義
Atlas Search インデックス定義の storedSource
オプションは、Atlas Search が保存する必要があるソース ドキュメント内のフィールドを指定します。 バックエンド データベースで暗黙的なクエリ時間検索の必要性が減るため、 特定のユースケースでクエリのパフォーマンスを向上させるために構成しstoredSource
。 Atlas Search ではすべてのデータ型のフィールドを保存できます。
Atlas Search は保存済みフィールドのインデックスを作成しないため、クエリを実行するにはフィールドを個別にインデックス化する必要があります。 returnStoredSourceオプションを使用して、クエリ時に保存されたフィールドを検索することもできます。
注意
storedSource
次のいずれかのバージョンを実行している Atlas クラスターでのみ使用できます。
MongoDB 5.0.6+
MongoDB 6.0+
MongoDB 7.0+
保存されたフィールドを検索する方法の詳細については、「 保存されたソース フィールドを返す 」を参照してください。
構文
インデックス定義では、 storedSource
オプションの構文は次のとおりです。
{ ..., "storedSource": true | false | { "include" | "exclude": [ "<field-name>", ... ] } }
オプション
オプションは ブール値 または インデックス定義storedSource
内の オブジェクト を受け取ります。
Boolean Values
値 | 説明 |
---|---|
true | Atlas Search がドキュメント内のすべてのフィールドを保存する必要があることを指定します。 完全なドキュメントを保存すると、インデックス作成およびクエリ中にパフォーマンスに大きな影響を与える可能性があります。 詳細については、「ソース フィールドの保存 」を参照してください。 |
false | Atlas Search が元のソース ドキュメントを保存しないように指定します。 これは storedSource オプションのデフォルト値です。 |
オブジェクト
storedSource
オプション オブジェクトは、次のいずれかのフィールドを受け入れます。
注意
オブジェクトにはinclude
またはexclude
のいずれかが含まれている必要があります。
フィールド | タイプ | 説明 |
---|---|---|
include | 文字列の配列 | 保存するフィールドへのフィールド名またはドット区切りのパスを含むリスト。 指定されたフィールドに加えて、Atlas Search はデフォルトで _id も保存します。 |
exclude | 文字列の配列 | 保存から除外するフィールド名またはフィールドへのドット区切りのパスを含むリスト。 指定すると、Atlas Search はここにリストされているフィールドを除く元のドキュメントを保存します。 |
例
次のインデックス例では、 sample_mflix.movies
コレクションのフィールドを使用して、 storedSource
オプションを使用して Atlas Search に保存するフィールドを構成する方法を示します。 Atlas UI のビジュアル エディターまたは JSON エディターを使用してインデックスを構成できます。
例
次の例では、title
awards.wins
コレクション内のドキュメントの フィールドと フィールドのみを保存します。ご希望の構成方法を選択したら、 sample_mflix
データベースの下のmovies
コレクションを選択します。
[ Refine Your Indexをクリックしてインデックスを構成します。
Stored Source Fieldsセクションで、 Specifiedをクリックします。
[ Field Name列のドロップダウンから [
awards.wins
] を選択し、[ Add ] をクリックします。保存する別のフィールドを指定するには、 Add Fieldをクリックします。
[ Field Name列のドロップダウンから [
title
] を選択し、[ Add ] をクリックします。[Save Changes] をクリックします。
Atlas Search にフィールドを保存するには、インデックス定義に次の例の5から10の行を追加します。 この例では、ドット表記を使用してネストされたフィールドを指定しています。
1 { 2 "mappings": { 3 ... 4 }, 5 "storedSource": { 6 "include": [ 7 "title", 8 "awards.wins" 9 ] 10 }, 11 ... 12 }
例
次の例では、 コレクションのドキュメントにあるdirectors
とimdb.rating
を除くすべてのフィールドを保存しています。 ご希望の構成方法を選択したら、 sample_mflix
データベースの下のmovies
コレクションを選択します。
インデックスを設定するには、 Refine Your Indexをクリックします。
Stored Source Fieldsセクションで、 All Except Specifiedをクリックします。
[ Field Name列のドロップダウンから [
directors
] を選択し、[ Add ] をクリックします。除外する別のフィールドを指定するには、 Add Fieldをクリックします。
[ Field Name列のドロップダウンから [
imdb.rating
] を選択し、[ Add ] をクリックします。[Save Changes] をクリックします。
次の例から5から10の行をインデックス定義に追加して、 フィールドを除外します。 この例では、ドット表記を使用してネストされたフィールドを指定しています。
1 { 2 "mappings": { 3 ... 4 }, 5 "storedSource": { 6 "exclude": [ 7 "directors", 8 "imdb.rating" 9 ] 10 }, 11 ... 12 }
例
次の例では、ドキュメント内のすべてのフィールドを コレクションに保存しています。 ご希望の構成方法を選択したら、 sample_mflix
データベースの下のmovies
コレクションを選択します。
インデックスを設定するには、 Refine Your Indexをクリックします。
Stored Source Fieldsセクションで、 Allをクリックします。
[Save Changes] をクリックします。
すべてのフィールドを保存するには、次の例のインデックス定義に行5を追加します。
1 { 2 "mappings": { 3 ... 4 }, 5 "storedSource": true, 6 ... 7 }