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选项接受 布尔值 或 索引定义 中的 对象 。
布尔值
值 | 说明 |
|---|---|
| 指定MongoDB Search 必须存储文档中的所有字段。存储完整文档可能会严重影响索引和查询期间的性能。要学习;了解更多信息,请参阅存储源字段。 如果索引定义包含向量类型字段,则不支持此操作。相反,请使用 |
| 指定MongoDB Search 不得存储原始源文档。这是 |
对象
storedSource 选项对象必须包含以下字段之一:
示例
以下索引示例使用 sample_mflix.movies集合中的字段来演示如何使用 storedSource 选项配置要存储在MongoDB Search 上的字段。您可以使用 mongosh、 Atlas 用户界面可视化编辑器或Atlas 用户界面 JSON编辑器来配置索引。
➤ 使用选择语言下拉菜单为此页面上的过程设立界面。
以下示例仅将文档中的title和awards.wins字段存储在collection中。moviessample_mflix选择首选配置方法后,选择数据库下的collection集合。
单击 Refine Your Index 配置索引。
在 Stored Source Fields 部分中,单击 Specified。
从Field Name列的下拉列表中选择
awards.wins,然后单击Add 。单击Add Field以指定要存储的另一个字段。
从Field Name列的下拉列表中选择
title,然后单击Add 。单击 Save Changes(连接)。
将以下示例中的 5 行到 10 行附加到索引定义中,以在MongoDB Search 上存储指定字段。该示例使用点表示法来指定嵌套字段。
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命名空间的示例仅将 title 和 awards.wins 字段存储在有关 mongot 的文档中:
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, } )