加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 系统 > 正文

MongoDB覆盖索引查询是什么,如何来使用

发布时间:2023-09-12 14:39:12 所属栏目:系统 来源:
导读:这篇文章主要介绍“MongoDB覆盖索引查询是什么,如何使用”,有一些人在MongoDB覆盖索引查询是什么,如何使用的问题上存在疑惑,接下来小编就给大家来介绍一下相关的内容,希望对大家解答有帮助,有这个方
这篇文章主要介绍“MongoDB覆盖索引查询是什么,如何使用”,有一些人在MongoDB覆盖索引查询是什么,如何使用的问题上存在疑惑,接下来小编就给大家来介绍一下相关的内容,希望对大家解答有帮助,有这个方面学习需要的朋友就继续往下看吧。
 
MongoDB 覆盖索引查询
 
官方的MongoDB的文档中说明,覆盖查询是以下的查询:
 
所有的查询字段是索引的一部分
 
所有的查询返回字段在同一个索引中
 
由于所有出现在查询中的字段是索引的一部分, MongoDB 无需在整个数据文档中检索匹配查询条件和返回使用相同索引的查询结果。
 
因为索引存在于RAM中,从索引中获取数据比通过扫描文档读取数据要快得多。
 
使用覆盖索引查询
 
为了测试覆盖索引查询,使用以下 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 之前版本可以使用 db.collection.ensureIndex() ,但 ensureIndex() 在 5.0 版本后已被移除,使用 createIndex() 代替。
 
现在,该索引会覆盖以下查询:
 
>db.users.find({gender:"M"},{user_name:1,_id:0})
 
也就是说,对于上述查询,MongoDB的不会去数据库文件中查找。相反,它会从索引中提取数据,这是非常快速的数据查询。
 
由于我们的索引中不包括 _id 字段,_id在查询中会默认返回,我们可以在MongoDB的查询结果集中排除它。
 
下面的实例没有排除_id,查询就不会被覆盖:
 
>db.users.find({gender:"M"},{user_name:1})
 
最后,如果是以下的查询,不能使用覆盖索引查询:
 
所有索引字段是一个数组
 
所有索引字段是一个子文档
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章