Mongodb索引简介

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第84篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关注威赞。谢谢。

在Mongodb当中,为集合添加索引能够提高查询效率 。如果没有索引,Mongodb必须扫描集合中的每一个文档数据来返回查询结果。如果集合当中包含查询合适的索引,Mongodb就可以使用该索引限制扫描文档的数量。尽管索引能够提高查询效率,但为集合添加索引会对Mongodb数据写入性能产生负面的影响。对于大量读写的集合,加入索引的代价是昂贵的,因为每一次数据插入和更新,都会带来索引的更新。

应用场景

当应用经常重复的针对集合中的某个字段或一些字段进行查询时,系统维护人员使用这些字段来创建索引,能够提高查询性能。例如下面的一些场景

场景

索引类型

人力资源部门经常使用员工的id查看员工信息。这可以为用户的id添加索引来提高查询效率

单字段索引

销售人员经常需要查看每个区域的销售情况。而区域是使用嵌入文档形式保存在数据库里的数据,包括多个字段,如城市,区县和邮编等。系统维护人员则可以在区域这个文档类型的字段上添加索引来提高查询性能。但用户在查询时,必须使用相同字段的文档作为过滤条件才可以使用到该索引 。

在嵌入是文档字段上创建的单字段索引

一个杂货铺老板,经常使用清点库存信息,需要使用商品名称和数量来查询数据。系统维护人员可以在商品名称和数量上添加索引来提高查询效率

复合索引

用户可以使用Mongodb Atlas, Mongodb shell和连接数据库的各种驱动以及客户端来创建索引。后续的文章中我们会介绍索引的创建方法。

索引结构

索引是保存了集合中部分数据的特殊数据结构。Mongodb使用B-tree这种数据结构来保存数据。很容易使用正序或者倒序来查询索引或通过索引来排序。索引保存了指定的字段值,并按照用户的指定的顺序进行排序。这种排序好的索引数据结构,能够方便的支持等值查询和区间查询。同时能够方便的支持排序。

默认索引

在集合创建的时候,Mongodb为_id字段建立的唯一索引。保证用户不会插入两个相同_id的文档。Mongodb不支持用户修改或删除默认索引。

索引的命名

索引默认使用字段名称和用户指定字段的排序方式来命名。使用下划线来区分字段名称和排序方式。例如在字段item和quantity上建立索引,其中item字段使用正序,而quantity字段倒序。{item: 1, quantity: -1}. 建立索引时,1表示正序,而-1表示倒序。则建立索引的默认名称是 item_1_quantity_-1.

索引建立后就无法重新命名,需要删除索引重建。

索引构建性能

在索引构建过程当中,应用和客户端性能可能会被索引的构建造成影响。包括限制对正在构建索引集合的读写等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【上海38℃】酷热之下,AI能否给我降降温?

近日上海的高温冲上热搜,要我就早早躲进机房,聆听嘈杂的轰鸣,穿着皮夹克喝着热可可,看着log——以上都是我的白日梦,哈哈哈^ ^) 不过,服务器和工作站确实“真芯热”,尤其是在高负载下&#xff…

【深度学习】图形模型基础(5):线性回归模型第二部分:单变量线性回归模型

1.引言 在统计学与机器学习的广阔领域中,线性回归作为一种基础而强大的预测技术,其核心在于通过输入变量(或称预测器、自变量)来估计输出变量(响应变量、因变量)的连续值。本章聚焦于线性回归的一个基本但…

基于SpringBoot的篮球竞赛预约平台

你好,我是计算机学姐码农小野!如果你对篮球竞赛预约平台感兴趣或有相关需求,欢迎私信联系我。 开发语言: Java 数据库: MySQL 技术: SpringBootMySql 工具: MyEclipse、Tomcat 系统展示…

ros2_control diff_drive_controller

系列文章目录 前言 一、轮式移动机器人运动学 本页介绍不同轮式移动机器人的运动学。如需进一步参考,请参阅 Siciliano et.al - Robotics: 建模、规划和控制》和 Kevin M. Lynch and Frank C. Park - Modern Robotics: 机械、规划和控制》。 …

什么是网络抓取|常见用例和问题

你可能听说过数据被称为现代信息社会的新石油。由于线上信息量庞大,能够有效地收集和分析网页数据已经成为企业、研究人员和开发人员的关键技能。这就是网页抓取技术的用武之地。网页抓取,也称为网页数据提取,是一种强大的技术,能…

配置jupyter时出现问题?怎么办?

在自己创建的虚拟环境(nmjpytorch)安装完jupyter,没有跳转到链接,问题如图: 解决方法: 1、查看自己的tornado版本为5.1.1,坑太高了,降低版本为4.5.3 2、卸载tornado-5.1.1 3、安装t…

哪些场景下可以更好地使用行列视(RCV)报表工具呢?

行列视产品是我们公司自主研发的一套基于HTML5技术的Excel式web生产报表应用系统,这款产品定位于发电企业生产指标的收集、报表制作和指标报表可视化,是国内首套专业化、自助化、智能化的生产指标管理及分析应用平台。功能强大但是却简单易用。 这款产品…

正确使用Pytorch Geometric打开Cora(Planetoid)数据集

文章目录 关于报错("Cannot connect to host")解决方法 关于报错(“Cannot connect to host”) 我们在使用PyG调用Planetoid数据集的时候,常会碰到如下报错: 解决方法就是手动下载这个数据集。…

电商价格监测:品牌控价的基石

品牌进行控价的前提是要对电商数据进行高效且准确的监测,倘若数据不准确或者覆盖率欠佳,就会致使控价方向出现偏差。力维网络始终秉持的数据驱动服务原则,唯有做好电商价格监测,提供高准确率的低价数据,方能为品牌控价…

Spring解耦合分析和总结

在我们的日常开发中,创建对象的操作随处可见以至于对其十分熟悉的同时又感觉十分繁琐,每次需要对象都需要亲手将其new出来,甚至某些情况下由于坏编程习惯还会造成对象无法被回收,这是相当糟糕的。但更为严重的是,我们一…

【Python】九种数据类型详讲(内含常见常见的字符串函数汇总)

个人主页:【😊个人主页】 系列专栏:【❤️Python】 文章目录 前言Number(数字)整数类型int (整型,长整型)float(浮点型)complex(复数)…

基于 Transformers库的ResNet扩展

构建自定义模型:基于🤗 Transformers库的ResNet扩展 引言 在自然语言处理(NLP)领域,🤗 Transformers库已经成为了一个不可或缺的工具,它提供了大量的预训练模型和灵活的API,极大地…

用flutter实现五种寻路算法的可视化效果,快来看看!

前言 半年前我写了一篇《十几种排序算法的可视化效果,快来看看!👀》,还是很有意思的。这篇文章中的内容还被张风捷特烈张老师收录进了FlutterUnit:《FlutterUnit 周边 | 收录排序算法可视化》。今天让我们再来做一个有…

Postman保存API返回的token以全局使用的整个流程

1、 调通获取token的接口,包含传递参数的类型,和输入密码是否需要md5加密,根据接口的要求,传入数据 2、 查看接口响应的报文,可以看到token的有效时间,token的类型,里面的access_token就是想要获…

【密码学】RSA公钥加密算法

文章目录 RSA定义RSA加密与解密加密解密 生成密钥对一个例子密钥对生成加密解密 对RSA的攻击通过密文来求得明文通过暴力破解来找出D通过E和N求出D对N进行质因数分解通过推测p和q进行攻击 中间人攻击 一些思考公钥密码比对称密码的机密性更高?对称密码会消失&#x…

【Java自动化测试框架--TestNG】

目录 一、 背景介绍 二、核心概念与联系 2.1 JUnit核心概念 2.2 TestNG核心概念 2.3 JUnit与TestNG的联系 三. 核心算法原理的详细讲解 3.1 JUnit算法原理 3.2 TestNG算法原理 四、什么是TestNG 五、 TestNG配置 2.1 Maven项目的结构: 2.2 POM文件中配置: 2.3 Tes…

【C++】相机标定源码笔记- 立体视觉相机的校准和图像矫正类

类主要用于双目相机的标定和矫正。它包含了读取和保存相机模型、计算标定参数以及矫正图像的功能。通过这些功能,可以实现双目相机的标定和矫正,从而提高双目相机的精度和稳定性。 公有函数: 构造函数、带参构造函数、析构函数、读取双目相机…

【C】Structure

参考摘抄学习来自: C 结构体C语言必学知识点 "结构体"详细解析!C 语言之结构体最全面总结C typedef 文章目录 1 定义2 初始化3 结构体大小的计算4 访问结构成员5 结构作为函数参数6 指向结构的指针7 结构体数组8 动态申请结构体 1 定义 它允…

GPT-4o还没完全开放,Moshi就提前开源了

GPT-4o已经发布有段时间了,但大众迟迟没有等到成型的产品出来,这会的功夫,法国创业团队抢先OpenAI发布端到端实时音频模型——Moshi。单从响应时效上,体验下来应该比GPT-4o还要快,但是音色及语言多样性的支持上&#x…

从资金管理的角度 谈谈伦敦金投资技巧

刚进入伦敦金市场的时候,笔者认为技术分析是很重要的,所以将学习伦敦金投资技巧的精力全部投入到技术分析的学习中。经过一系列交易的亏损,笔者才发现,其实交易管理才是最重要的。如果管理得好,30%的胜率,投…