Docs 菜单

Docs 主页开发应用程序Python 驱动程序pymongo

使用索引

在此页面上

  • Overview
  • 操作注意事项
  • 样本数据
  • 创建索引
  • 删除索引
  • 删除单个索引
  • 删除所有索引
  • 更多信息
  • API 文档

在本指南中,您可以学习;了解如何在PyMongo中使用索引。 索引可以提高查询效率,并为查询和存储文档添加附加功能。

如果没有索引,MongoDB 必须扫描集合中的每个文档,以查找与每个查询匹配的文档。 这些集合扫描很慢,可能会对应用程序的性能产生负面影响。 但是,如果查询存在适当的索引,MongoDB 就可以使用该索引来限制必须检查的文档。

若要提高查询性能,请对应用程序查询中经常出现的字段以及其他操作返回的排序结果中经常出现的字段建立索引。您添加的每个索引在活动状态下都会占用磁盘空间和内存,因此您应当跟踪索引内存和磁盘使用情况以进行容量规划。此外,当写入操作更新索引化字段时,MongoDB 还须更新相关索引。

由于 MongoDB 支持动态模式,因此应用程序可以查询事先未知名称或任意名称的字段。 MongoDB 4.2引入了 通配符索引来帮助支持这些查询。 通配符索引并不是为了取代基于工作负载的索引规划而设计的。

有关设计数据模型和选择适合应用程序的索引的更多信息,请参阅 MongoDB Server 手册中的数据建模和索引指南。

本指南中的示例使用Atlas 样本数据集中 sample_mflix.movies集合。 要了解如何创建免费的MongoDB Atlas cluster并加载样本数据集,请参阅PyMongo入门 。

MongoDB支持多种不同的索引类型来支持数据查询。 以下页面介绍了最常见的索引类型,并提供了创建每种索引类型的示例代码。

您可以删除针对 _id 字段的所有未使用索引,但默认唯一索引除外。

以下部分介绍如何删除单个索引或删除集合中的所有索引。

将索引实例或索引名称传递给drop_index()方法,以从集合中删除索引。

以下示例从movies集合中删除名为"_title_"的索引:

movies.drop_index("_title_")

注意

不能从复合文本索引中删除单个字段。您必须删除整个索引,然后创建新索引,才能更新索引字段。

从 MongoDB 4.2 开始,您可以在集合上调用 drop_indexes() 方法来删除所有索引:

collection.drop_indexes()

对于早期版本的 MongoDB,请将"*"作为参数传递给对集合上drop_index()的调用:

collection.drop_index("*")

To learn more about indexes in MongoDB, see the Indexes guide in the MongoDB Server manual.

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档:

← 使用索引优化查询