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

索引

索引支持在 MongoDB 中高效执行查询。如果没有索引,MongoDB 就必须扫描集合中的每个文档以返回查询结果。如果查询存在适当的索引,MongoDB 就可以使用该索引来限制其必须扫描的文档数。

索引可提高查询性能,但添加索引会影响写入操作的性能。对于写入读取率高的集合,由于每次插入操作都必须同时更新所有索引,因此会带来较高的索引成本。

如果您的应用程序对相同字段重复运行查询,请对这些字段创建索引以提高性能。示例,考虑以下场景:

Scenario
索引类型

人力资源部门经常需要通过员工 ID 来查找员工。您可以在员工 ID 字段上创建索引以提高查询性能。

销售人员经常需要按位置查找客户信息。位置存储在一个嵌入式对象中,其中包含 statecityzipcode 等字段。您可以在 location 对象上创建索引,以提高对该对象的查询性能。

在嵌入式文档上创建索引时,仅指定整个嵌入式文档的查询使用该索引。对文档中的特定字段的查询不使用该索引。

嵌入式文档上的单字段索引

杂货店经理经常需要按名称和数量查找库存商品,以确定哪些商品库存不足。您可以同时为 itemquantity 字段创建单个索引,以提升查询性能。

您可以在 MongoDB Atlas 中使用驱动程序方法或 MongoDB Shell 来创建和管理索引。

对于 MongoDB Atlas 中托管的部署,您可以通过 MongoDB Atlas 用户界面或 Atlas CLI 来创建和管理索引。MongoDB Atlas 还包含性能优化顾问,该工具可以建议索引改进慢查询、按影响程度对建议的索引进行分级,以及提供索引删除建议。

To learn how to create and manage indexes using the MongoDB Atlas UI or the Atlas CLI, see Create, View, Drop, and Hide Indexes.

如要了解有关 MongoDB Atlas Performance Advisor 的更多信息,请参阅监控并改进慢查询。

您可以使用驱动程序方法或 MongoDB Shell 来创建和管理索引。要了解详情,请参阅以下资源:

索引是一种特殊的数据结构,它以易于遍历的形式存储一小部分集合数据集。MongoDB 索引使用 B-tree 数据结构。

索引可存储某个特定字段或多个字段的值,并按字段的值进行排序。索引条目的排序支持高效的相等匹配和基于范围的查询操作。此外,MongoDB 还可使用索引中的顺序来返回排序后的结果。

有关索引键长度限制和每个集合的索引限制,请参阅索引限制。

MongoDB 在创建集合时会在 _id 字段上创建一个唯一索引_id 索引可防止客户端插入两个具有相同 _id 字段值的文档。您无法删除此索引。

注意

分片群集中,如果您使用 _id 字段作为分分片键,那么您的应用程序必须确保 _id 字段中的值具有唯一性。为此,您可以使用一个具有自动生成的 ObjectId 的字段。

索引的默认名称是索引键和索引中每个键的方向(1-1)的连接,使用下划线作为分隔符。例如,在 { item : 1, quantity: -1 } 上创建的索引的名称为 item_1_quantity_-1

索引一旦创建便无法重命名。相反,您必须删除索引并使用新名称重新创建索引。

要了解如何指定索引的名称,请参阅指定索引名称

应用程序在索引构建期间可能会遭遇性能下降,包括对集合的读/写访问受到限制。有关索引构建流程的更多信息,请参阅基于已填充集合的索引构建,包括复制环境中的索引构建部分。

获得技能徽章

免费掌握“索引设计基础”!

了解详情

给本页内容打分