MongoDB - 覆盖查询

MongoDB - 覆盖查询 首页 / MongoDB入门教程 / MongoDB - 覆盖查询

在本章中,无涯教程将学习涵盖的查询。

Covered查询

根据官方的MongoDB文档,涵盖的查询是以下查询-

链接:https://www.learnfk.comhttps://www.learnfk.com/mongodb/mongodb-covered-queries.html

来源:LearnFk无涯教程网

  • 查询中的所有字段都是索引的一部分。
  • 查询中返回的所有字段都在同一索引中。

由于查询中存在的所有字段都是索引的一部分,因此MongoDB会匹配查询条件,并使用相同的索引返回输出,而无需实际查看文档内部。由于索引存在于RAM中,因此与通过扫描文档获取数据相比,从索引获取数据要快得多。

要测试涵盖的查询,请考虑 users 集合中的以下文档-

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

无涯教程将首先使用以下查询在 gender 和 user_name 字段上为 users 集合创建复合索引-

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

现在,该索引将涵盖以下查询-

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

也就是说,对于上面的查询,MongoDB不会去研究数据库文档。相反,它将从索引数据中获取所需数据,速度非常快。

无涯教程网

由于索引不包含 _id 字段,因此无涯教程已将其明确排除在查询输出集中,因为MongoDB默认在每个查询中都返回_id字段。所以下面的查询不会在上面创建的索引中涉及-

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构实战160讲 -〔杨波〕

程序员进阶攻略 -〔胡峰〕

玩转webpack -〔程柳锋〕

设计模式之美 -〔王争〕

现代C++编程实战 -〔吴咏炜〕

OAuth 2.0实战课 -〔王新栋〕

技术管理案例课 -〔许健〕

技术领导力实战笔记 2022 -〔TGO 鲲鹏会〕

徐昊 · AI 时代的软件工程 -〔徐昊〕

好记忆不如烂笔头。留下您的足迹吧 :)