与索引一起工作
概述
在本指南中,您可以了解如何使用C驱动程序的索引。索引可以提高查询效率,并为查询和存储文档添加功能。
如果没有索引,MongoDB必须扫描集合中的每个文档来找到与每个查询匹配的文档。这些集合扫描很慢,可能会对应用程序的性能产生负面影响。然而,如果查询存在适当的索引,MongoDB可以使用该索引来限制必须检查的文档。
操作注意事项
为了提高查询性能,请在应用程序查询和返回排序结果的操作中经常出现的字段上建立索引。您添加的每个索引都会在活动状态下消耗磁盘空间和内存,因此我们建议您跟踪索引的内存和磁盘使用情况以进行容量规划。此外,当写操作更新索引字段时,MongoDB会更新相关的索引,这可能会对写操作的性能产生负面影响。
您可以在MongoDB应用程序中使用通配符索引来查询预先未知名称或任意的字段。通配符索引不是用来替代基于工作负载的索引规划的。
有关设计您的数据模型和选择适用于应用程序的索引的更多信息,请参阅MongoDB服务器手册中的数据建模和索引指南。
示例数据
本指南中的示例使用的是movies
集合,该集合位于 sample_mflix
数据库中,该数据库来自Atlas示例数据集。要了解如何创建免费的MongoDB Atlas集群并加载示例数据集,请参阅在Atlas中入门指南。
创建索引
MongoDB支持多种不同的索引类型,以帮助查询您的数据。以下页面描述了最常用的索引类型,并为每种索引类型提供了示例代码。
删除索引
您可以删除任何未使用的索引,除了默认的唯一索引(在 _id
字段上)。要通过mongoc_collection_drop_index()
函数从集合中删除索引,请传递一个mongoc_collection_t
结构,索引名称和一个可选的bson_error_t
结构。
以下示例从movies
集合中删除了名称为"_title_"
的索引。
bson_error_t error; if (mongoc_collection_drop_index (collection, "_title_", &error)) { printf ("Successfully dropped index\n"); } else { fprintf (stderr, "Failed to drop index: %s", error.message); }
注意
您不能从复合文本索引中删除单个字段。您必须删除整个索引并创建一个新的索引来更新索引字段。
API 文档
要了解更多关于本指南中讨论的任何功能,请参阅以下 API 文档