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

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

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


 


 

前言

本章将会讲解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})

 

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

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

 上一篇

MongoDB - 连接

下一篇 

MongoDB 创建集合

标签:name,覆盖,MongoDB,查询,索引,软件开发,gender
From: https://www.cnblogs.com/gddg/p/17098189.html

相关文章

  • 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?一个开源的分布式搜索引擎,可以用......
  • php操作ElasticSearch搜索引擎流程详解
    目录一、安装二、使用三、新建ES数据库四、创建表五、插入数据六、查询所有数据七、查询单条数据八、搜索九、测试代码〝古人学问遗无力,少壮功夫老始成〞......
  • java——spring boot集成MongoDB——数据库安装和登录、简单使用
    参考文档,菜鸟教程:https://www.runoob.com/mongodb/mongodb-tutorial.html  参考文档、黑马教程:https://www.bilibili.com/video/BV1bJ411x7mq?p=1&vd_source=79bbd5b7......
  • 1.6 通过地址和索引实现数组
    CPU会把基址寄存器+变址寄存器的值解释为实际查看的内存地址。变址寄存器的值就相当于高级编程语言程序中数组的索引功能。数组是指同样长度的数据在内存中进行连续排列的......