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

2023-11-16

  

前言

本章将会讲解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 创建集合

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开心档-软件开发入门之MongoDB 覆盖索引查询 的相关文章

  • 我可以按日期查询 MongoDB ObjectId 吗?

    我知道 ObjectId 包含它们的创建日期 有没有办法查询ObjectId的这方面 将时间戳弹出到 ObjectId 中 http www kchodorow com blog 2011 12 20 querying for timest
  • MongoDB 如何使用 $date 运算符进行查询?

    编辑 上下文 我正在使用 Talend ETL 工具 并在查询中使用 ISODate 或 Date 或 new Date 如下所示失败并出现错误 因此我需要解决方法 dt ISODate 2014 01 01 dt Date 2014 01
  • 显示来自 mongodb 的所有数据并在 doT.js 模板引擎中渲染它

    我想从 mongodb 中提取数据并将其传递给视图 一切似乎都正常 但我没有看到所有 10000 条记录都显示出来 而是只看到了一条 我觉得我非常接近解决它 但我陷入困境 我正在使用node mongodb native express和d
  • mongodb - 检索数组子集

    看似简单的任务对我来说是一个挑战 我有以下 mongodb 结构 services TCP80 data status 1 delay 3 87 ts 1308056460 status 1 delay 2 83 ts 1308058080
  • 使用 dockerfile 在 docker 中安装 mongodb 驱动

    我有一个 mongodb docker 容器 我需要另一个安装了 php 和 apache 的 docker 容器 我想从这个容器运行一个 php 脚本并将一些数据发送到 mongodb 容器以将数据保存在 mongodb 数据库中 所以我
  • mocha——手表和猫鼬模型

    如果我让 mocha 监视更改 每次保存文件时 mongoose 都会抛出以下错误 OverwriteModelError 无法覆盖Client模型一旦编译 我知道猫鼬不允许两次定义模型 但我不知道如何让它与mocha watch clie
  • 使用mongoid动态创建索引

    我有一项为我的文档创建新字段的工作 我想在这项工作结束时创建该字段的索引 我试过 Model index field gt 1 and also Mongoid Sessions default rating prediction ensu
  • 如何中止 MongoDB shell 中正在运行的查询?

    我不敢相信我必须问这个问题 但是如何停止我刚刚运行的查询 该查询现在正在运行 并且显然需要很长时间才能在 Mongo shell 中完成 Control C似乎会使外壳崩溃 并吐出大量错误 中建议的愚蠢解决方案这个帖子 https stac
  • 如何使用 node.js / mongodb 在 HTML 中显示任意、无模式数据

    我使用 mongodb 将应用程序错误日志存储为 json 文档 我希望能够将错误日志格式化为 HTML 而不是将纯 json 返回到浏览器 日志是完全无模式的 它们可以随时更改 因此尝试执行此操作 在 Jade 中 是没有用的 var i
  • i18Next - NodeJS - 如何在不重新加载服务器的情况下更改翻译

    我正在使用 NodeJS 的 i18next 包来启用翻译 我将它作为标准 并为每个语言 国家对使用一个 json 文件 我想构建一个管理页面来编辑翻译 而无需深入研究代码 那么 如何 重新加载 管理员编辑过的 json 文件 而无需重新启
  • MongoDB 在仅返回 _id 时使用 COLLSCAN

    我想返回 MongoDB 集合中的所有 ID 我使用了以下代码 db coll find id 1 但MongoDB扫描整个集合而不是从默认读取信息index id 1 从日志中 find collection filter project
  • mongoDB白名单IP

    我看到类似的帖子 但没有一个能帮助我解决我的问题 在学习了从头开始构建 MERN 应用程序的 Udemy 教程后 我陷入了 mongoose 连接的困境 这是我的 index js 代码 const express require expr
  • 使用 AWS MSK 连接器连接到 AWS VPC 内的 MongoDB atlas

    我正在尝试使用MongoDB使用更改流Kafka 我选择 AWS MSK 是因为我的整个基础设施都位于 AWS 内 并且可以轻松与其他 AWS 服务集成 I created an AWS MSK cluster within the VPC
  • (节点:20732)[DEP0018] DeprecationWarning:未处理的承诺拒绝已被弃用。未来在nodejs中

    我正在尝试在我的应用程序中生成确认链接 虽然它工作正常并且也生成链接 但是当我访问该链接时 它在 Chrome 控制台中显示 POST http localhost 3000 api auth confirmation 400 Bad Re
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 在 mongodb 和 nodejs 中对博客和评级进行建模

    我有一个博客集合 其中包含用户给予的标题 正文和综合评分 另一个集合 评级 其架构引用了博客 以对象 ID 的形式对博客进行评级 如果有的话 的用户以及他们给出的评级 即 1 或 1 当特定用户按照 最新优先 的顺序浏览博客时 比如每页 4
  • 按一个字段聚合,选择另一个字段最大值的文档作为集合

    使用聚合框架 获取每个分组的字段最大值的文档的最佳方法是什么 因此使用下面的集合 我希望具有为每个具有最新日期的 group id 返回一个文档的功能 第二个清单显示了所需的结果 group id date 1 11 1 12 1 11 2
  • 在 Nodejs 中,如何停止 FOR 循环直到 MongoDB 调用返回

    我正在研究下面的代码片段 我有一个名为 stuObjList 的 JSON 对象数组 我想循环遍历数组以查找具有特定标志集的特定 JSON 对象 然后进行数据库调用以检索更多数据 当然 FOR 循环不会等待数据库调用返回并到达 j leng
  • MongoDB 3.0 Windows 服务启动:发生系统错误 2

    我已经下载了 MongoDB Windows msi 安装并成功运行 mongod exe 和 mongo exe 命令文件执行工作正常 安装手册展示了如何创建配置文件 然后使用命令创建Windows Server sc exe creat
  • Mongodb:语法错误:意外的标识符

    我是 mongodb 的新手 我正在使用 mongolab 创建免费数据库 我的数据库名称是 enron 使用在线 mongoshell 连接到 mongo 数据库然后发生错误 mongo ds033499 mongolab com 334

随机推荐

  • idea 部署项目到tomcat

    转 http www biliyu com article 986 html 这篇文章的后半部分解决了困扰我一上午的问题 因为遇到问题不喜欢问别人 然后搜到这篇文章 我在百度输入的是 warning no artifacts marked
  • 如何解决Ubuntu 下gstm不能打开图形用户界面的问题

    gstm是一款Linux下的SSH管理工具 至于gstm的主要作用 来这里看此文的人都懂的 用此工具一段时间后 某天打开时突然出现不能打开图形界面的问题 一阵焦虑 卸载重装n遍后仍不能解决 查找半天资料 突然在一小论坛某位网友的回答中解决了
  • 如何在 Mapbox GL JS 中加载任意投影的图片?

    在 Mapbox GL JS API 中 我们可以使用 image source 和 raster layer 将图片叠加到地图上 例如 Add a raster image to a map layer 但是 因为 Mapbox 使用 网
  • Ubuntu 代理上网设置(firefox,新立得,apt-get等)

    现在公司需要代理上网 ubuntu又是那么的依懒网络 前几天在公司装了ubuntu就开始查资料设置代理上网 以下整合一下 部分是参考其他网友的 这里就不一一说明了 一 Firefox代理上网 这个最简单了 依次点击 edit gt pref
  • git 本地仓库关联到远程仓库

    将本地仓库关联到远程仓库 方式一 远程仓库没有文件 第一步 git init 初始化git仓库 第二步 git remote add 地址 设置remote地址 第三步 git add 将所有变更提交到本地仓库 第四步 git commit
  • SpringBoot激活profiles的几种方式

    多环境是最常见的配置隔离方式之一 可以根据不同的运行环境提供不同的配置信息来应对不同的业务场景 在SpringBoot内支持了多种配置隔离的方式 可以激活单个或者多个配置文件 激活的profiles要在项目内创建对应的配置文件 格式为app
  • LearnOpenGL - 绘制三角形完整代码

    include
  • Linux下安装Python3.9(orangepi Zero2)

    1 查看当前Linux下自带的Python版本 python version 2 更新Linux源 sudo apt update 3 安装Python所需要的环境 代码如下 通用代码 树莓派 全志 Linux均适用 sudo apt in
  • Octave常用函数

    矩阵生成 eye n 生成n行n列的单位矩阵 rand n m 随机生成n行m列大小范围在0 1之间的随机数 randn n m 按高斯分布生成n行m列的随机数 ones n m 生成n行m列元素均为1的矩阵 zeros n m 生成n行m
  • kaggle:泰坦尼克生存预测( R语言机器学习分类算法)

    本文在基本的多元统计分析技术理论基础上 结合机器学习基本模型 选择Kaggle 数据建模竞赛网站 的入门赛 Titanic生存预测作为实战演练 较为完整地呈现了数据建模的基本流程和思路 采用的模型有逻辑回归 决策树 SVM支持向量机以及进阶
  • 爬虫代码(TJ)

    getip py来自https mp csdn net postedit 99288836 import getip import re import cx Oracle import urllib request from bs4 imp
  • 统计学:方差分析和相关分析的区别和联系

    区别 方差分析目的是检验因素是否对总体起作用 方法是不同的分组施加不同的因素水平 然后看组间差距是否明显大于组内差距 若明显大于则认为因素对总体起作用 具体过程中 方差分析只读取因变量数据 而不读取自变量数值 相关分析是检验变量之间是否有依
  • Redis学习(二)---常用命令、数据类型

    文章目录 常用命令 五大基本数据类型 1 String 2 List 3 Set 4 Hash 5 Zset 三种特殊数据类型 1 geospatial 2 Hyperloglog 3 Bitmaps 小结 常用命令 set key val
  • 05LinuxC线程学习之练习循环创建多个子线程和线程传参大坑(可以对比之前循环创建多个子进程)

    注 1 之前循环创建多个子进程的文章 https blog csdn net weixin 44517656 article details 109433060 2 wait回收子进程并且获取正常退出的返回值和异常退出的信号值的文章 htt
  • ESP32开发—文件系统spiffs

    文件系统有很多种 不同的操作的系统或者存储介质会选择不一样的文件系统 对于spiffs来说就是为了嵌入式设备而定制的精简版文件系统 优点是占用的内存非常小 而已不使用malloc分配内存 系统使用的内存由用户传入静态内存 缺点就是能存储的文
  • matlab傅里叶级数展开

    傅里叶级数 傅里叶级数展开 傅里叶级数展开原理 源码 方波 方波 三角波 matalb 傅里叶级数展开结果图片 傅里叶级数展开 傅里叶级数展开原理 周期函数可以通过一系列的三角函数的线性组合来逼近 傅里叶技术展开可以找到这些三角函数 首先我
  • ELK企业级日志分析系统

    ELK概述 为什么要使用 ELK 日志主要包括系统日志 应用程序日志和安全日志 系统运维和开发人员可以通过日志了解服务器软硬件信息 检查配置过程中的错误及错误发生的原因 经常分析日志可以了解服务器的负荷 性能安全性 从而及时采取措施纠正错误
  • 【Alist + Teracloud】WebDAV免费畅游互联网个人方案总结,一些支持WebDAV的应用推荐

    文章目录 1 介绍 废话 支持略过 1 1 WebDAV 是啥 1 2 支持开通 WebDAV 服务的东西 1 2 1 网盘类 公有云 1 2 2 私有云 1 2 3 本地部署 1 2 4 Alist 1 3 支持连接 WebDAV 的应用
  • 计算机网络【java面试题】

    1 计算机网络中的七层模型以及每一层的作用 OSI七层模型 功能 对应的网络协议 应用层 应用层是网络体系中最高的一层 也是唯一面向用户的一层 也可视为为用户提供常用的应用程序 每个网络应用都对应着不同的协议 HTTP TFTP FTP N
  • 开心档-软件开发入门之MongoDB 覆盖索引查询

    作者简介 每天分享MongoDB教程的学习经验 和学习笔记 座右铭 有自制力 做事有始有终 学习能力强 愿意不断地接触学习新知识 个人主页 iOS开发上架的主页 前言 本章将会讲解MongoDB 覆盖索引查询 目录 MongoDB 覆盖索引