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