首页 > 数据库 >开心档-软件开发入门之MongoDB 覆盖索引查询

开心档-软件开发入门之MongoDB 覆盖索引查询

时间:2023-02-07 15:36:22浏览次数:60  
标签:name 覆盖 MongoDB 查询 索引 软件开发 gender

 作者简介:每天分享​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"
}

开心档-软件开发入门之MongoDB 覆盖索引查询_获取数据

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

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

开心档-软件开发入门之MongoDB 覆盖索引查询_获取数据_02

**注:**5.0 之前版本可以使用 db.collection.ensureIndex() ,但 ensureIndex() 在 5.0 版本后已被移除,使用 createIndex() 代替。

现在,该索引会覆盖以下查询:

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

开心档-软件开发入门之MongoDB 覆盖索引查询_字段_03

也就是说,对于上述查询,MongoDB的不会去数据库文件中查找。相反,它会从索引中提取数据,这是非常快速的数据查询。

由于我们的索引中不包括 _id 字段,_id在查询中会默认返回,我们可以在MongoDB的查询结果集中排除它。

下面的实例没有排除_id,查询就不会被覆盖:

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

开心档-软件开发入门之MongoDB 覆盖索引查询_获取数据_04

最后,如果是以下的查询,不能使用覆盖索引查询:

  • 所有索引字段是一个数组 所有索引字段是一个子文档

​ 上一篇​

​MongoDB - 连接​

​下一篇 ​

​MongoDB 创建集合​


标签:name,覆盖,MongoDB,查询,索引,软件开发,gender
From: https://blog.51cto.com/u_15721717/6042167

相关文章

  • 开心档-软件开发入门之MongoDB 创建集合
    作者简介:每天分享​​MongoDB教程​​的学习经验、和学习笔记。  座右铭:有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。​个人主页:​​雪奈椰子的主页​​​......
  • MongoDB--字符串长度计算
    MongoDB--字符串长度计算db.event_coll.aggregate([{$project:{"road":1,"length_Bytes":{$strLenBytes:"$road"},"length_CP":{$strLen......
  • 开心档-软件开发入门之MongoDB 覆盖索引查询
    作者简介:每天分享MongoDB教程的学习经验、和学习笔记。  座右铭:有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。个人主页:iOS开发上架的主页​​​......
  • 1.6 通过地址和索引实现数组
    CPU把基址寄存器+变址寄存器的值解释为实际查看的内存地址。变址寄存器的值就相当于高级编程语言程序中数组的索引功能。数组是指同样长度的数据在内存中进行连续排列的数......
  • 9个高质量图标的最佳搜索引擎
    对于每个网站开发者来说,设计是很重要的一部分。图标是设计中一个环节。你可以找到许多集合图标的网站。但很难找到免费的高质量图标。这是我在此分享一些免费的高质量图标搜......
  • mongodb对内存的使用
    1.默认的分配策略Startingin3.4,theWiredTigerinternalcache,bydefault,willusethelargerofeither:50%ofRAMminus1GB,or256MB.即(总内存×50%-......
  • MySQL中的BTREE索引和HASH索引
    MySQL中索引的存储类型有两种:BTREE和HASHMYISAM和InnoDB存储引擎只支持BTREE索引;MEMORY和HEAP存储引擎支持BTREE和HASH索引。一、使用索引的原因1.减少了存储引擎需要扫描......
  • <ORACLE NOTE> 1. Partition table Management --- 分区表分区索引重建
    SELECT'alterindex'||t2.owner||'.'||t1.INDEX_NAME||'rebuildpartition'||t1.PARTITION_NAME||'online;',t1.STATUSFROMdba_ind_partitionst1,dba_indexest2......
  • MongoDB使用
    启动MongoDB服务Windows在bin目录下运行:mongod--dbpath=..\data\dbE:\ProgramFiles\MongoDB\Server\6.0\bin>mongod--dbpath=..\data\db连接MongoDBWindows......
  • ElasticSearch分布式搜索引擎——从入门到精通
    ES分布式搜索引擎注意:在没有创建库的时候搜索,ES会创建一个库并自动创建该字段并且设置为String类型也就是text什么是elasticsearch?一个开源的分布式搜索引擎,可以用......