对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

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

MongoDB 搜索索引中的 storedSource 选项指定 MongoDB 搜索必须存储的源文档中的字段。搜索索引定义您可以配置 storedSource 以提高某些 使用案例 中的查询性能,因为它减少了对后端数据库进行隐式查询时查找的需要。您可以在MongoDB 搜索上存储所有MongoDB 搜索字段类型的字段。

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 指定要在 mongot 上存储的字段,或使用 exclude 从存储中排除 vector 类型字段。

false

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

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

字段
类型
说明

include

字符串数组

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

exclude

字符串数组

包含字段名称或点分隔路径的字段列表,这些字段将排除在存储之外。如果指定,MongoDB 搜索会存储原始文档,但排除此处列出的字段。如果索引定义包含向量类型的字段,则必须排除存储中的 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,
}
)