文档菜单
文档首页
/ / /
C++ 驱动
/

使用索引

本页内容

  • 概述
  • 操作注意事项
  • 示例数据
  • 创建索引
  • 删除索引
  • 删除单个索引
  • 删除所有索引
  • 更多信息
  • API 文档

在此指南中,您可以学习如何使用 C++ 驱动程序中的 索引。索引可以提高查询效率并为查询和存储文档添加额外的功能。

没有索引,MongoDB必须扫描集合中的每个文档以找到匹配每个查询的文档。如果查询存在合适的索引,MongoDB可以使用该索引来限制必须检查的文档,并提高潜在查询性能。

为了提高查询性能,在应用查询和返回排序结果时经常出现的字段上建立索引。每个添加的索引在活动时都会消耗磁盘空间和内存,因此我们建议您跟踪索引内存和磁盘使用情况,以进行容量规划。此外,当写操作更新索引字段时,MongoDB也会更新任何相关索引。

由于MongoDB支持动态模式,应用程序可以查询预先不知道名称或任意的字段。MongoDB 4.2引入了通配索引以帮助支持这些查询。通配索引不是为了替代基于工作负载的索引规划。

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

本指南中的示例使用的是movies集合,位于sample_mflix数据库中,该数据库来自Atlas示例数据集。要从您的C++应用程序访问此集合,请创建一个连接到Atlas集群的mongocxx::client实例,并将以下值分配给您的dbcollection变量

auto db = client["sample_mflix"];
auto collection = db["movies"];

有关创建免费MongoDB Atlas集群并加载数据集的说明,请参阅Atlas入门指南

MongoDB支持多种索引类型,以帮助查询您的数据。以下页面描述了不同的索引类型,并提供了创建每种类型索引的示例代码。

  • 单字段索引

  • 组合索引

  • Atlas 搜索索引

您可以删除除默认的_id字段上的唯一索引之外的所有未使用索引。

以下部分提供了示例,说明如何从一个集合中删除一个或多个索引。

要从集合中删除单个索引,调用drop_one()方法并传入要删除的索引名称或索引实例。

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

collection.indexes().drop_one("title_1");

注意

您不能从复合文本索引中删除单个字段。必须删除整个索引并创建一个新的索引来更新索引字段。

从MongoDB 4.2版本开始,您可以通过在集合的索引视图中调用 drop_all() 方法来删除所有索引

collection.indexes().drop_all();

对于MongoDB的早期版本,将 "*" 作为参数传递给集合的索引视图中的 drop_one() 调用

collection.indexes().drop_one("*");

要了解更多关于MongoDB中索引的信息,请参阅MongoDB服务器手册中的 索引 指南。

要了解更多关于本指南中讨论的方法或类型的信息,请参阅以下API文档

返回

索引