索引
索引支持在MongoDB中高效执行查询。如果没有索引,MongoDB必须扫描集合中的每个文档才能返回查询结果。如果查询存在适当的索引,MongoDB将使用该索引来限制它必须扫描的文档数量。
尽管索引可以提高查询性能,但添加索引会对写操作的性能产生负面影响。对于写多读少的集合,索引成本高昂,因为每次插入都必须更新任何索引。
用例
如果您的应用程序反复在相同字段上运行查询,您可以在这些字段上创建索引以改善性能。例如,考虑以下场景
入门
您可以在以下位置创建和管理索引MongoDB Atlas,通过驱动程序方法或MongoDB Shell。MongoDB Atlas是云中MongoDB部署的全托管服务。
在MongoDB Atlas中创建和管理索引
对于托管在MongoDB Atlas中的部署,您可以使用MongoDB Atlas UI或Atlas CLI创建和管理索引。MongoDB Atlas还包括一个性能顾问,它会推荐索引以提高慢查询,按影响程度对建议的索引进行排序,并推荐哪些索引可以删除。
要了解如何使用MongoDB Atlas UI或Atlas CLI创建和管理索引,请参阅创建、查看、删除和隐藏索引。
要了解更多关于MongoDB Atlas性能顾问的信息,请参阅监控和改进慢查询。
使用驱动程序方法或MongoDB Shell创建和管理索引
您可以使用驱动程序方法或MongoDB Shell创建和管理索引。有关更多信息,请参阅以下资源
详情
索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。MongoDB索引使用B树数据结构。
索引存储特定字段或字段集的值,并按字段的值进行排序。索引条目的排序支持高效的等值匹配和基于范围的查询操作。此外,MongoDB可以使用索引中的排序返回排序结果。
限制
索引有一些限制,例如索引键的长度或每个集合的索引数量。有关详细信息,请参阅索引限制。
默认索引
MongoDB在创建集合时会在唯一索引上创建_id字段。该_id
索引阻止客户端插入具有相同_id
字段值的两个文档。您不能删除此索引。
索引名称
索引的默认名称是索引键的连接以及每个键在索引中的方向(1
或-1
),使用下划线作为分隔符。例如,在{ item : 1, quantity: -1 }
上创建的索引名称为item_1_quantity_-1
。
创建索引后,您无法重命名索引。相反,您必须删除并使用新名称重新创建索引。
有关指定索引名称的说明,请参阅指定索引名称。
索引构建性能
在索引构建过程中,应用程序可能会遇到性能下降,包括对集合的读写访问受限。有关索引构建过程的更多信息,请参阅已填充集合上的索引构建,包括复制环境中的索引构建部分。
了解更多
MongoDB 提供多种不同类型的索引,以支持特定类型的数据和查询。了解更多信息,请参阅 索引类型。
要了解您可以在索引中指定的属性和行为,请参阅 索引属性。
了解您在创建索引时可能需要考虑的因素,请参阅 索引策略。
了解索引的性能影响,请参阅 操作因素和数据模型。
了解查询设置和索引,请参阅
setQuerySettings
.