【MongoDB】索引 - 单字段索引

news2024/11/27 11:35:54

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.coloradmin.cn/o/1166910.html

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

相关文章

springboot整合七牛云oss操作文件

文章目录 springboot整合七牛云oss操作文件核心代码(记得修改application.yml配置参数⭐)maven依赖QiniuOssProperties配置类UploadControllerResponseResult统一封装响应结果ResponseType响应类型枚举OssUploadService接口QiniuOssUploadServiceImpl实现…

劳务派遣派遣人员如何缴纳保险

《劳动合同法》规定:劳务派遣协议应当约定派遣人员的社会保险费的数额与支付方式以及违反协议的责任。可见,由哪一方为劳务派遣人员缴纳各项社会保险是由劳务派遣公司和实际用工单位协商确定的。但不管如何约定,劳务派遣单位或用工单位都必须…

倾斜摄影三维模型的根节点合并的文件大小与质量关系分析

倾斜摄影三维模型的根节点合并的文件大小与质量关系分析 倾斜摄影三维模型的根节点合并过程涉及大量的数据,包括高分辨率图像和点云信息。在进行根节点合并时,文件大小和质量之间存在一定的关系。本文将分析倾斜摄影三维模型的根节点合并的文件大小与质量…

机器学习笔记:RNN值Teacher Forcing

1 基本介绍 Teacher forcing是一种在训练循环神经网络(RNN)时使用的技术,尤其是在序列生成任务中,如机器翻译、文本生成或语音合成。这种方法的目的是更有效地训练网络预测下一个输出,给定一系列先前的观察结果。 1.…

专访 SPACE ID:通往 Web3 无许可域名服务协议之路

Web3 行业发展风起云涌,对于初创项目而言,如何寻找适合自己的赛道是首要问题。当前伴随用户交互和跨平台操作需求日渐兴起,如何更迅速地使用一站式域名实现便捷验证成为大众的心头期盼。 这一背景下,SPACE ID 于众星林立的 Web3 …

MFC 窗体插入图片

1.制作BMP图像1.bmp 放到res文件夹下,资源视图界面导入res文件夹下的1.bmp 2.添加控件 控件类型修改为Bitmap 图像,选择IDB_BITMAP1 3.效果

自家开发VS第三方美颜SDK:技术和资源的比较

开发直播平台时,开发人员面临一个关键决策:是选择使用第三方美颜SDK,还是自家开发美颜算法?本文将深入探讨这两种方法的技术和资源方面的比较,帮助开发者更好地决定哪种途径最适合他们的应用。 一、第三方美颜SDK&am…

mapbox使用marker创建html点位信息

mapbox使用marker创建html点位信息 codePen地址 mapboxgl.accessToken "pk.eyJ1IjoibGl1emhhbzI1ODAiLCJhIjoiY2xmcnV5c2NtMDd4eDNvbmxsbHEwYTMwbCJ9.T0QCxGEJsLWC9ncE1B1rRw"; const center [121.29786, 31.19365]; const map new mapboxgl.Map({container: &quo…

JS 递归和解递归

递归 // 角色数据 const roleData [{id: 1, //角色idname: "网络服务部", // 角色名称parent_id: 0, // 父类没有 parent_id},{id: 2, //角色idname: "前端开发组", // 角色名称parent_id: 1, // 父类没有 parent_id},{id: 3, // 角色idname: "前端开…

跨境电商须知| 独立站的特点与痛点有哪些?

独立站的特点与痛点有哪些? 无论是做独立站,还是做亚马逊,都有各自的难点。自己做独立站若要在跨境行业长足发展,既要知道独立站有什么特点,要清楚独立站的痛点并一一克服。了解独立站搭建更多 一、独立站的特点 1、…

GeoTrust证书:您的在线信任伙伴

GeoTrust是全球领先的SSL证书颁发机构(CA),拥有超过20年的安全颁发经验。GeoTrust证书不仅令您的网站或应用程序在技术上更加安全,而且还为您的用户传递了信任的信息。 保障用户数据的安全 GeoTrust是全球领先的SSL证书颁发机构&…

【优选算法系列】【专题四前缀和】第一节.DP34 一维前缀和DP35 二维前缀和

文章目录 前言一、一维前缀和 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写二、二维前缀和 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写总结 前言 一、一维前缀和 1.1 题目描…

Stable Diffusion 的提示词使用技巧

推荐Stable Diffusion自动纹理工具: DreamTexture.js自动纹理化开发包 什么是提示语? 提示语是人工智能中的一个重要组成部分,尤其是自然语言处理 (NLP)。在AI自人工智能中,想要获得好的效果,简…

液氮恒温器的使用注意事项

在低温研究的时候,我们经常会用到液氮恒温器,那在使用液氮恒温器的时候,我们需要注意什么事项呢? 首先,我们要正确地把样品固定在样品台上,要用低温胶或者双面胶将样品固定牢固,如果有电学测量…

降低边际成本:跨境电商的利润增长策略

在竞争激烈的跨境电商领域,降低成本是提高利润的关键。边际成本,即生产或销售一件额外商品所需的额外成本,在跨境电商中起到至关重要的作用。在本文中,我们将探讨降低边际成本的策略,以实现跨境电商的利润增长。 供应链…

[每周一更]-(第70期):常用的GIT操作命令

1、增删文件 # 添加当前目录的所有文件到暂存区 $ git add .# 添加指定文件到暂存区 $ git add <file1> <file2> ...# 添加指定目录到暂存区&#xff0c;包括其子目录 $ git add <dir># 删除工作区文件&#xff0c;并且将这次删除放入暂存区 $ git rm [file…

word插入图片不显示

段落格式要设置成非固定的。

在PyCharm中直接启动mitmproxy并自动打开关闭系统代理

前言 在前面的文章中&#xff0c;有几篇是介绍mitmproxy 的。 这个mitmproxy 的确是个捕获数据的好工具&#xff0c;但在运行时候需要在命令行启动&#xff0c;这是很令人苦恼的。 之前也尝试过脱离命令行去启动mitmproxy&#xff0c;在Python中启动mitmproxy&#xff0c;脱离…

音频修复增强软件iZotope RX 10 mac中文特点

iZotope RX 10 mac是一款音频修复和增强软件。 iZotope RX 10 mac主要特点 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。 音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等处…

正则表达式中扩展表示法的理解

正则表达式可以拥有扩展表达式&#xff0c;大致形式是(?...) 理解&#xff1a; 以(?)的含义为例子 data a1b2ce34.5d_6fres re.findall(r[a-z](?\d), data) # [a, b, ce]# ([a-z](?\d) 表示的是匹配小写字符一个或多个&#xff0c;但是匹配之后需要满足后续有数字一个…