在 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
选项接受 布尔值 或 索引定义 中的 对象 。
布尔值
值 | 说明 |
---|---|
true | 指定 Atlas Search 必须存储文档中的所有字段。存储完整文档可能会严重影响索引和查询期间的性能。 要了解更多信息,请参阅存储源字段。 |
false | 指定 Atlas Search 不得存储原始源文档。这是 storedSource 选项的默认值。 |
对象
storedSource
选项对象接受以下字段之一:
注意
该对象必须包含include
或exclude
。
字段 | 类型 | 说明 |
---|---|---|
include | 字符串数组 | 包含字段名称或要存储的字段的点分隔路径的列表。 除了指定的字段外,Atlas Search 默认还会存储 _id 。 |
exclude | 字符串数组 | 列表,其中包含要排除在存储范围之外的字段名称或点分隔的字段路径。 如果指定,Atlas Search 会存储除此处列出的字段之外的原始文档。 |
示例
sample_mflix.movies
以下索引示例使用collection中的字段来演示如何使用 选项配置要存储在 Atlas SearchstoredSource
上的字段。您可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。
例子
以下示例仅将文档中的title
和awards.wins
字段存储在collection中。movies
sample_mflix
选择首选配置方法后,选择数据库下的collection集合。
单击 Refine Your Index 配置索引。
在 Stored Source Fields 部分中,单击 Specified。
从Field Name列的下拉列表中选择
awards.wins
,然后单击Add 。单击Add Field以指定要存储的另一个字段。
从Field Name列的下拉列表中选择
title
,然后单击Add 。单击 Save Changes(连接)。
将以下示例中的 5 到 10 行添加到索引定义中,以便在 Atlas Search 中存储字段。该示例使用点表示法来指定嵌套字段。
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 }