游乐游手机版
首页/数据库/文章详情

MongoDB覆盖索引查询原理与优化实践

时间:2026-08-14 18:09
MongoDB 官方文档指出,所谓覆盖查询(Covered Query)通常需要满足以下条件: 所有查询条件字段都属于索引的一部分 所有需要返回的字段也都包含在同一个索引中 由于查询过程中涉及的全部字段都已经存储在索引里,因此 MongoDB 无需再次回表扫描完整文档;它可以直接依靠索引完成条件过滤

MongoDB 官方文档指出,所谓覆盖查询(Covered Query)通常需要满足以下条件:

MongoDB 覆盖索引查询

  • 所有查询条件字段都属于索引的一部分
  • 所有需要返回的字段也都包含在同一个索引中

由于查询过程中涉及的全部字段都已经存储在索引里,因此 MongoDB 无需再次回表扫描完整文档;它可以直接依靠索引完成条件过滤,并返回同样来自该索引中的查询结果。

因为索引通常会被加载到 RAM 中,所以直接通过索引读取数据,往往比扫描数据文档的方式更快,查询性能也更高。

使用覆盖索引查询

为了演示 MongoDB 覆盖索引查询,下面使用一个 users 集合作为示例:

{
   "_id": ObjectId("53402597d852426020000002"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "gender": "M",
   "name": "Tom Benzamin",
   "user_name": "tombenzamin"
}

我们在 users 集合上创建一个联合索引,索引字段为 gender 和 user_name:

>db.users.createIndex({gender:1,user_name:1})

注:如果使用的是 5.0 之前的 MongoDB 版本,也可以使用 db.collection.ensureIndex();不过从 5.0 开始,ensureIndex() 已被移除,因此应改为使用 createIndex()。

现在,这个联合索引可以覆盖下面这条查询语句:

>db.users.find({gender:"M"},{user_name:1,_id:0})

也就是说,对于上面的查询,MongoDB 不需要再到数据库数据文件中读取完整文档。相反,它会直接从索引中提取所需数据,因此这是一种非常高效的查询方式。

由于当前索引并不包含 _id 字段,而 MongoDB 在查询结果中默认会返回 _id,所以我们需要在结果集中显式将 _id 排除,才能满足覆盖索引查询的条件。

下面这个示例没有排除 _id,因此查询就无法被索引完全覆盖:

>db.users.find({gender:"M"},{user_name:1})

最后,以下这类查询通常不能使用覆盖索引查询:

  • 索引字段中包含数组字段
  • 索引字段中包含子文档字段
来源:https://www.runoob.com/mongodb/mongodb-covered-queries.html
上一篇Redis常见数据类型详解与应用场景 下一篇MySQL数据库导入导出操作教程与常用命令
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Redis是什么:核心特性、架构与应用场景解析
数据库 · 2026-09-01

Redis是什么:核心特性、架构与应用场景解析

Redis是一款基于内存的键值型NoSQL数据库,以超高读写速度和丰富的数据结构著称。本文系统梳理Redis的核心特性、架构组成、性能优势及典型应用场景,并通过与Memcached、MySQL、MongoDB的对比,帮助开发者快速判断Redis是否适合当前业务需求。

Windows 安装 MongoDB 完整图文教程
数据库 · 2026-09-01

Windows 安装 MongoDB 完整图文教程

本文详细介绍在 Windows 系统上安装 MongoDB 的完整流程。从官网下载 MSI 安装包开始,逐步演示自定义安装路径、配置 Windows 服务、跳过 MongoDB Compass 等关键选项,并提供通过系统服务列表验证安装是否成功的方法,帮助开发者快速搭建本地 MongoDB 环境。

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动
数据库 · 2026-09-01

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动

本文详解在 Linux 系统下安装 MongoDB 的完整流程,涵盖依赖包安装、二进制包下载解压、环境变量配置、数据与日志目录创建及服务启动验证。通过标准化命令与路径说明,帮助开发者快速完成部署并确认服务状态。

MacOS安装MongoDB完整教程
数据库 · 2026-09-01

MacOS安装MongoDB完整教程

本文介绍在MacOS系统下安装MongoDB的完整流程,涵盖下载、解压、目录配置、环境变量设置及服务启动。通过明确的命令与参数说明,帮助开发者快速完成环境搭建并验证安装结果。

Ubuntu系统安装与配置Redis完整指南
数据库 · 2026-09-01

Ubuntu系统安装与配置Redis完整指南

本文详解在Ubuntu系统中安装Redis的两种主流方式:apt在线安装与源码编译安装。涵盖版本选择逻辑、服务启停与状态检查、连接验证方法,以及在线练习工具与桌面GUI客户端的对比与使用建议,帮助开发者快速搭建并验证Redis运行环境。