索引是用于提高查询性能的特殊数据结构。 索引会以易于遍历的形式存储集合数据的一部分。 索引可存储某一特定字段或多个字段的值, 并按字段的值进行排序。
要提高查询性能,请为查询中经常出现的字段以及按字段排序的所有操作构建索引。
对索引字段(Field)的查询 可以使用索引来限制必须扫描以查找匹配文档的文档数量。
对索引字段进行排序操作,可返回按索引预先排序的文档。
要了解有关索引的更多信息,请参阅索引。
注意
Considerations
Indexes have some negative performance impact on write operations. For collections with high write-to-read ratio, indexes are expensive since each insert must also update any indexes. For a detailed list of considerations for indexes, see Operational Considerations for Indexes.
所需角色
要创建、删除或隐藏索引,您必须至少拥有以下一种角色提供的访问权限:
Considerations
By default, you can have up to three concurrent index builds. To learn more, see Maximum Concurrent Index Builds.
查看索引
警告
数据浏览器仅显示集群中主节点的 Usage 指标。如果您的应用程序主要从从节点读取,则 Usage 指标不能完全反映整个集群的索引使用情况。
For more comprehensive index usage statistics, run the $indexStats aggregation stage on each node in your cluster.
在 Indexes 标签页中,您可以查看集合的索引信息。要访问集合的 Indexes 标签页,您需要:
AtlasGoData Explorer在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Database 标题下的 Data Explorer。
The Data Explorer displays.
重要提示:您还可以单击集群的名称以打开 Cluster侧边栏,然后单击Data Explorer Shortcuts标题下的 。
对于每个索引, Atlas都会显示以下信息:
名称与定义 | 索引和键的名称。 |
|---|---|
类型 | 常规索引、文本索引、地理空间索引或哈希索引。 |
size | 索引的大小。 |
使用 | Number of times the primary node has used the index in a lookup since the index was created or the last server restart. This metric is for informational purposes only. To get comprehensive index usage statistics across all nodes, run the |
属性 | 索引的任何特殊属性(如唯一性、部分性)。 |
创建索引
警告
Do not create indexes on encrypted fields. Creating indexes on encrypted fields that use Queryable Encryption negatively affect performance. Instead, you can create an index on the __safeContent__ field to support queries on encrypted fields.
打开索引创建对话框
From the Indexes tab, click the Create Index button.
在索引中添加字段
指定索引键。
要指定现有文档字段作为索引键,请从下拉列表中选择字段。
要将任何文档中都不存在的字段指定为索引键, 请在输入框中输入字段名称。
To create a compound index, click the plus icon next to the index type dropdown.
使用每个字段(Field)名右侧的下拉菜单指定索引类型。 你可以指定以下类型之一:
升序
降序
2dsphere
Text
要了解如何指定通配符索引,请参阅创建通配符索引。
可选。 指定索引选项
Atlas支持以下索引选项:
选项 | 说明 | 详细信息 | ||||
|---|---|---|---|---|---|---|
创建唯一索引 | 确保索引字段不存储重复值。 您不能对唯一索引执行滚动构建。如果使用 | |||||
索引名称 | 指定索引的名称。 | |||||
创建 TTL 索引 | 在索引字段值经过指定秒数后自动删除文档。 | |||||
部分过滤器表达式 | 只索引匹配指定过滤器表达式的文档。 例如: 以下部分筛选器表达式仅对含有 | |||||
通配符投影 | 支持与索引中指定投影匹配的未知或任意字段。要使用通配符投影,请将索引字段名称设立为 例如: 请考虑以下通配符投影文档: 如果索引字段名称是 | |||||
使用自定义排序规则 | 通过在文本框中键入或粘贴排序规则文档来为索引创建自定义排序规则。 | |||||
创建稀疏索引 | 索引会跳过任何缺少索引字段的文档。 | |||||
构建滚动进程 | 可以最大限度地减少索引构建对性能的影响。 重要提示:以滚动方式构建索引会降低集群的弹性并增加索引构建时间。仅当常规索引构建无法满足您的需求时,我们才建议使用滚动索引构建。 警告:避免同时执行滚动索引和复制索引构建过程,因为这可能会导致意外问题,例如构建中断和循环崩溃。 您只能在 M10 个以上的集群上构建滚动索引。 在滚动索引构建期间,Atlas 会从副本集取出每个节点,以独立运行的实例启动以构建索引,然后将其返回到副本集。以滚动顺序对集群中的每个节点重复此进程。 节点可能会显示为关闭,而Atlas会离线构建索引。这是预期行为,不是问题。 |
MongoDB Vector Search 和MongoDB Search 索引
您无法在数据浏览器中创建MongoDB Search 或MongoDB Vector Search 索引。要管理集合的MongoDB Search 和MongoDB Vector Search 索引,请参阅:
创建通配符索引
You can create wildcard indexes to support queries against unknown or arbitrary fields. To create a wildcard index in Atlas, manually type the wildcard index field (<field>.$**) into the Select a field name input.
例子
以其中的文档包含 userMetadata 对象的集合为例。userMetadata 对象中的字段可能会因不同文档而异。
您可对 userMetadata 创建通配符索引,以考虑该对象中的所有潜在字段。在 Select a field name 输入中键入以下内容:
userMetadata.$**
为通配符索引指定类型(ascending 或 descending),然后单击 Create Index(创建索引)。
Atlas将新索引的类型显示为 Wildcard。
隐藏或取消隐藏索引
您可以向查询规划器隐藏索引,以评估在不实际删除索引的情况下删除索引的潜在影响。