Docs 菜单
Docs 主页
/ /

在MongoDB搜索索引中定义存储的源字段

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选项接受 布尔值 索引定义 中的 对象 。

说明

true

指定MongoDB Search 必须存储文档中的所有字段。存储完整文档可能会严重影响索引和查询期间的性能。要学习;了解更多信息,请参阅存储源字段。

如果索引定义包含向量类型字段,则不支持此操作。相反,请使用include mongotexcludevector指定要存储在 上的字段,或使用 从存储中排除 类型字段。

false

指定MongoDB Search 不得存储原始源文档。这是 storedSource 选项的默认值。

storedSource 选项对象必须包含以下字段之一:

字段
类型
说明

include

字符串数组

列表,其中包含要存储的字段名称或以点分隔的字段路径。除指定字段外, MongoDB Search默认下还会存储 _id

exclude

字符串数组

列表,其中包含要排除在存储范围之外的字段名称或点分隔的字段路径。如果指定, MongoDB Search 将存储除此处列出的字段之外的原始文档。如果索引定义包含向量类型的字段,则必须从存储中排除 vector类型字段。

以下索引示例使用 sample_mflix.movies集合中的字段来演示如何使用 storedSource 选项配置要存储在MongoDB Search 上的字段。您可以使用 mongosh、 Atlas 用户界面可视化编辑器或Atlas 用户界面 JSON编辑器来配置索引。


➤ 使用选择语言下拉菜单为此页面上的过程设立界面。


以下示例仅将文档中的titleawards.wins字段存储在collection中。moviessample_mflix选择首选配置方法后,选择数据库下的collection集合。

  1. 单击 Refine Your Index 配置索引。

  2. Stored Source Fields 部分中,单击 Specified

  3. Field Name列的下拉列表中选择awards.wins ,然后单击Add

  4. 单击Add Field以指定要存储的另一个字段。

  5. Field Name列的下拉列表中选择title ,然后单击Add

  6. 单击 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}

以下示例将文档中除directorsimdb.rating之外的所有字段存储在集合中。 选择首选配置方法后,选择sample_mflix数据库下的movies集合。

  1. 单击 Refine Your Index 配置索引。

  2. Stored Source Fields 部分中,单击 All Except Specified

  3. Field Name列的下拉列表中选择directors ,然后单击Add

  4. 单击Add Field以指定要排除的另一个字段。

  5. Field Name列的下拉列表中选择imdb.rating ,然后单击Add

  6. 单击 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集合。

  1. 单击 Refine Your Index 配置索引。

  2. Stored Source Fields 部分中,单击 All

  3. 单击 Save Changes(连接)。

将以下示例中的第 5 行添加到索引定义中,以存储所有字段。

1{
2 "mappings": {
3 "dynamic": true,
4 },
5 "storedSource": true,
6}

以下 sample_mflix.movies命名空间的示例仅将 titleawards.wins 字段存储在有关 mongot 的文档中:

db.movies.createSearchIndex(
"default",
"definition": {
"mappings": {
"dynamic": true,
},
"storedSource": {
"include": [
"title",
"awards.wins"
]
}
}
)

sample_mflix.movies命名空间的以下示例存储文档中除 directorsimdb.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,
}
)

后退

向量

在此页面上