【MongoDB】索引 - 单字段索引

MongoDB支持在集合文档中的任意字段上创建索引,默认情况下所有的集合都有一个_id字段的索引,用户和应用可以新增索引用于查询和操作。

一、准备工作

这里准备一些学生数据

db.students.insertMany([{ _id: 1,  name: "张三", age: 20, class: { id: 1, name: "1班" }},{ _id: 2,  name: "李四", age: 22, class: { id: 2, name: "2班" }},{ _id: 3,  name: "王五", age: 24, class: { id: 3, name: "3班" }},
]);

二、查询索引

db.students.getIndexes();

上面我们查询了students集合中的索引列表

查询结果如下:

[ { v: 2, key: { _id: 1 }, name: '_id_' } ]

默认情况下,students集合中存在一个_id字段的索引;

三、创建索引

1、创建索引

db.students.createIndex({age: 1});

上面创建了age字段的正序索引,其中1代表的是按照age的值正序排序的索引,如果是-1代表的是按照age的值倒序排序的索引

2、查询索引

db.students.getIndexes();

结果如下:

[{ v: 2, key: { _id: 1 }, name: '_id_' },{ v: 2, key: { age: 1 }, name: 'age_1' }
]

可以看到多了一个名称为age_1的索引

3、执行查询

db.students.find({age: {$gt: 21}
})

结果如下:

[{ _id: 2, name: '李四', age: 22, class: { id: 2, name: '2班' } },{ _id: 3, name: '王五', age: 24, class: { id: 3, name: '3班' } }
]

4、查询过程

db.students.find({ age: { $gt: 21 } }).explain();

结果如下:

可以看到查询过程中会使用到索引名称为age_1的索引

四、创建内部文档索引

1、创建索引

db.students.createIndex({'class.name': -1});

上面创建了class字段下name字段的倒序索引,其中-1代表的是按照class字段下name字段的值倒序排序的索引,如果是1代表的是按照class字段下name字段的值正序排序的索引

注意:由于是内部文档,字段的引用中间需要使用符号(.)进行分割,索引key值两侧我们需要加上单引号

2、查询索引

db.students.getIndexes();

结果如下:

[{ v: 2, key: { _id: 1 }, name: '_id_' },{ v: 2, key: { age: 1 }, name: 'age_1' },{ v: 2, key: { 'class.name': -1 }, name: 'class.name_-1' }
]

可以看到多了一个名称为class.name_-1的索引

3、执行查询

db.students.find({ 'class.name': '1班'})

结果如下:

[ { _id: 1, name: '张三', age: 20, class: { id: 1, name: '1班' } } ]

4、查询过程

db.students.find({ 'class.name': '1班'}).explain();

结果如下:

可以看到查询过程中会使用到索引名称为class.name_-1的索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集群调度-02

目录 1、亲和性 1.1 节点亲和性 1.2 Pod 亲和性 1.3 键值运算关系 1.4 Pod亲和性与反亲和性 1.5 使用 Pod 反亲和性调度 2、污点(Taint) 和 容忍(Tolerations) 2.1 污点(Taint) 2.2 容忍(Tolerations) 2.3 其它注意事项 2.4 维护操作 3、Pod启动阶段(相…

onnx-tensorrt-8.4-EA安装和使用

因项目需求要用到onnx-tensorrt,在安装过程中遇到不少坑,故这里简单记录一下,给大家一个参考。 首先是尝试在本机上直接安装,发现会出现版本对应不上一系列问题,故最终我还是选择在docker拉去一个镜像去配环境和使用。…

马斯克发布大模型Grok;主流AI创意生成工具图谱;Runway视频大赛获奖作品解析;DALL-E 3图像混合操作;42章经播客推荐 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 👀 马斯克「xAI」发布首个AI大模型「Grok」 https://grok.x.ai 11月5日,马斯克旗下人工智能公司 xAI 发布了首款 AI 聊天产品…

Capto2024专为Mac电脑设计的屏幕录制和视频编辑软件

不得不说视频编辑功能:Capto提供了多种视频编辑功能,例如剪辑、旋转、裁剪、调整音频和视频的音量、加入水印、添加注释等,你能够使用Capto编辑你的视频,使之更加专业和生动。有目共睹的是录制完成后,你能够使用Capto提…

20.7 OpenSSL 套接字SSL加密传输

OpenSSL 中的 SSL 加密是通过 SSL/TLS 协议来实现的。SSL/TLS 是一种安全通信协议,可以保障通信双方之间的通信安全性和数据完整性。在 SSL/TLS 协议中,加密算法是其中最核心的组成部分之一,SSL可以使用各类加密算法进行密钥协商,…

web3 dapp React项目引入 antd 对 balance 用户token信息组件进行样式改造

好 上文 web3 React dapp中编写balance组件从redux取出并展示用户资产 我们简单处理了用户资产的展示 那么 我们继续 先启动 ganache 环境 终端输入 ganache -d然后 打开我们的项目 将合约发布到区块链上 truffle migrate --reset然后 我们启动项目 确认一切正常 还原到上文…

k8s中实现mysql主备

文章目录 一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.1 安装nfs1.2.2 部署nfs-provisioner 1.3 安装mysql1.4 备库上查看是否同步 一、k8s中实现mysql主备 1.1 环境信息 机器操作系统ipmysql版本k8s版本storageClassmaster1CentOS7.8192.168.0.20mysql5.…

C++ 代码实例:多项式除法简单计算工具

文章目录 前言代码仓库代码说明核心片段 结果总结参考资料作者的话 前言 C 代码实例:多项式除法简单计算工具。 代码仓库 yezhening/Programming-examples: 编程实例 (github.com)Programming-examples: 编程实例 (gitee.com) 代码 说明 由于代码篇幅较多&#…

【蓝桥杯省赛真题41】Scratch电脑开关机 蓝桥杯少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch电脑开关机 一、题目要求 编程实现 二、案例分析 1、角色分析

基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)

一、前言 基于STM32+OneNet设计的智慧超市管理系统(2023升级版) 1.1 项目背景 随着IoT技术的不断发展,智能无人超市也越来越受到人们的关注。智能无人超市是指在无人值守的情况下,通过物联网、大数据等技术手段实现自助选购、结算和配送的新型商场。当前设计了一种基于STM32…

【数据开发】大数据平台架构,Hive / THive介绍

1、大数据引擎 大数据引擎是用于处理大规模数据的软件系统, 常用的大数据引擎包括Hadoop、Spark、Hive、Pig、Flink、Storm等。 其中,Hive是一种基于Hadoop的数据仓库工具,可以将结构化的数据映射到Hadoop的分布式文件系统上,并提…

家用电脑做服务器,本地服务器搭建,公网IP申请,路由器改桥接模式,拨号上网

先浇一盆冷水! 我不知道其他运营商是什么情况。联通的运营商公网IP端口 80、8080、443 都会被屏蔽掉,想要开放必须企业备案(个人不行)才可以。也就是说,只能通过其他端口进行showtime了。 需要哪些东西? 申…

邦芒攻略:面试迟到该如何补救

面试迟到该如何补救 ,人际交往能力强的人在职场上也非常吃得开,职场少不了竞争,职场上的很多东西都是值得学习的,要学会职场的规则才能够如鱼得水,了解面试迟到该如何补救 。 ​ ​1、路上突发情况事先提前告知的 在…

leetcode做题笔记216. 组合总和 III

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 解释…

HTML表单标签

## HTML标签:表单标签 * 表单: * 概念:用于采集用户输入的数据的。用于和服务器进行交互。 * form:用于定义表单的。可以定义一个范围,范围代表采集用户数据的范围 * 属性&#xff1…

MySQL中的刷脏机制详解

名词解释 脏页:当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。 干净页:内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。 LSN:称为日志的逻辑序列号(l…

HTB——introduction to active directory

文章目录 一、Active directory structure二、Active Directory Terminology 一、Active directory structure Active Directory (AD) 是用于 Windows 网络环境的目录服务。它是一种分布式分层结构,允许集中管理组织的资源,包括用…

MIPI-CSI-2 RAW10笔记

好文: 【精选】摄像头的MIPI接口、DVP接口和CSI接口-CSDN博客【精选】摄像头的MIPI接口、DVP接口和CSI接口-CSDN博客 (56 封私信 / 24 条消息) 显示器的 VGA、HDMI、DVI 和 DisplayPort 接口有什么区别? - 知乎 (zhihu.com) 嵌入式工程师必备&#x…

基于白鲸算法的无人机航迹规划-附代码

基于白鲸算法的无人机航迹规划 文章目录 基于白鲸算法的无人机航迹规划1.白鲸搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用白鲸算法来优化无人机航迹规划。 1.白鲸搜索算法 …

内核态内存映射

内核态的内存映射机制,主要包含以下几个部分: 内核态内存映射函数 vmalloc、kmap_atomic 是如何工作的;内核态页表是放在哪里的,如何工作的?swapper_pg_dir 是怎么回事;出现了内核态缺页异常应该怎么办&am…