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.mzph.cn/web/40744.shtml

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

相关文章

Windows密码凭证获取

Windows HASH HASH简介 hash ,一般翻译做散列,或音译为哈希,所谓哈希,就是使用一种加密函数进行计算后的结果。这个 加密函数对一个任意长度的字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串。…

常用字符集与乱码原因

1.ASCII字符集:仅对英文字符编码,每个字符用1B编码,7位二进制足以表示所有ASCII字符集,因此最高位始终为0 2.GBK字符集:GB2312字符集(简体中文字符集)BIG5字符集(台湾地区繁体中文字…

服装购物商城系统小程序-计算机毕业设计源码35058

摘要 服装购物商城系统小程序,依托Spring Boot框架的强大支持,为用户呈现了一个功能丰富、体验流畅的在线购物平台。该系统不仅涵盖了商品展示、用户注册登录、购物车管理、订单处理、支付集成等核心购物流程,还引入了个性化推荐算法&#xf…

Jmeter使用JSON Extractor提取多个变量

1.当正则不好使时,用json extractor 2.提取多个值时,默认值必填,否则读不到变量

什么是集港‼️货代小白快来点赞收藏-深圳全球利物流有限公司

集港是什么意思? 集港的定义 集港是指将分散在各处的集装箱集中到港口码头堆场的过程,即把各地的集装箱汇集到港区,准备装船。在船挂靠码头之前,码头会制定集港计划,安排货船的集装箱在某个时间段内进入码头并摆放好,…

【js】this指向问题

1.首先先明确,this会出现在哪里。 this出现在全局作用域中,或函数作用域中(普通函数、箭头函数)。 对象是不产生作用域的,对象的{}和函数的{}不一样,this并不会直接出现在对象或类中,只会出现在…

Android SurfaceFlinger——屏幕状态初始化(二十二)

对于开机启动动画前期准备的相关步骤,我们已经分析了前 5 个,对于第 6 步调用 eglGetDisplay() 函数对 OpenGL ES 初始化并获取默认屏幕,我们在介绍 OpenGL ES 的时候也进行了详细的分析,下一步我们我们来分析对屏幕的状态进行初始化。 1)getInternalDisplayToken:获取显…

pycharm小游戏制作

以下是一个使用 Python 和 PyGame库在 PyCharm中创建一个简单的小游戏(贪吃蛇游戏)的示例代码,希望对您有所帮助: import pygame import random# 基础设置 # 屏幕高度 SCREEN_HEIGHT 480 # 屏幕宽度 SCREEN_WIDTH 600 # 小方格…

Java | Leetcode Java题解之第212题单词搜索II

题目&#xff1a; 题解&#xff1a; class Solution {int[][] dirs {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};public List<String> findWords(char[][] board, String[] words) {Trie trie new Trie();for (String word : words) {trie.insert(word);}Set<String> a…

VitePress美化

参考资料&#xff1a; https://blog.csdn.net/weixin_44803753/article/details/130903396 https://blog.csdn.net/qq_30678861/category_12467776.html 站点信息修改 首页部分的修改基本都在.vitepress/config.mts,这个文件内修改。 title 站点名称 description 描述 top…

运维团队指南:完善监控指标与优化报警机制

随着业务规模的不断扩大和系统复杂度的日益增加&#xff0c;运维团队面临着前所未有的挑战。为了保障系统的稳定性和高效运行&#xff0c;完善监控指标与优化报警机制成为了运维工作中的重中之重。本文将结合运维行业动态&#xff0c;就如何完善监控指标体系、优化报警机制等方…

RedHat运维-Linux SSH基础3-sshd守护进程

1. sshd这个守护进程提供了OpenSSH服务&#xff0c;请问可以通过编辑哪些配置文件&#xff0c;来配置这个服务呢&#xff1f;________________________ 2. sshd这个守护进程提供了OpenSSH服务&#xff0c;请问可以通过编辑哪些配置文件&#xff0c;来配置这个服务呢&#xff1f…

Java springboot校园管理系统源码

Java springboot校园管理系统源码-014 下载地址&#xff1a;https://download.csdn.net/download/xiaohua1992/89364089 技术栈 运行环境&#xff1a;jdk8 tomcat9 mysql5.7 windows10 服务端技术&#xff1a;Spring Boot Mybatis VUE 使用说明 1.使用Navicati或者其它工…

怎么样调整分类的阈值

调整分类模型的阈值是改变模型对正负类的预测标准的一种方法&#xff0c;常用于提高精确率、召回率或者其他性能指标。以下是如何调整分类阈值的步骤和方法&#xff1a; PS&#xff1a;阈值是针对预测概率&#xff08;表示样本属于某个特定类别的可能性&#xff09;来说的 调…

Midjourney 如何使用参考图像来提升图像的准确性和相似度?

🧙🏼图像提示 🧙🏼‍♂️ 您可以使用图像作为提示的一部分来影响作业的构图、样式和颜色。图像提示可以单独使用,也可以与文本提示一起使用 - 尝试组合具有不同样式的图像以获得最令人兴奋的结果。 🛠️实际图像提示操作步骤 点击加号按钮,双击上传文件,把小黄猫…

超级好用的java http请求工具

kong-http 基于okhttp封装的轻量级http客户端 使用方式 Maven <dependency><groupId>io.github.kongweiguang</groupId><artifactId>kong-http</artifactId><version>0.1</version> </dependency>Gradle implementation …

ePTFE膜(膨体聚四氟乙烯膜)应用前景广阔 本土企业技术水平不断提升

ePTFE膜&#xff08;膨体聚四氟乙烯膜&#xff09;应用前景广阔 本土企业技术水平不断提升 ePTFE膜全称为膨体聚四氟乙烯膜&#xff0c;指以膨体聚四氟乙烯&#xff08;ePTFE&#xff09;为原材料制成的薄膜。ePTFE膜具有耐化学腐蚀、防水透气性好、耐候性佳、耐磨、抗撕裂等优…

自然语言处理(NLP)—— 期末复习总

1. 结构主义方法The structural Approach 1.1 语素学Graphemics/音素学phonemics 音素phonemes、书面符号written signs、字符character。这一部分关注语言的最小声音单位&#xff08;音素phonemes&#xff09;以及这些声音如何通过书面符号written signs或字符character来表示…

如何做到高级Kotlin强化实战?(二)

高级Kotlin强化实战&#xff08;二&#xff09; 2.Kotlin 与 Java 比较 2.Kotlin 与 Java 比较 2.5 字符串拼接 //Java String firstName "Android"; String lastName "enginner"; String message "My name is: " firstName " "…

Web美食分享平台的系统-计算机毕业设计源码45429

基于Web美食分享平台的系统设计与实现 摘 要 本研究基于Spring Boot框架&#xff0c;设计并实现了一个Web美食分享平台&#xff0c;旨在为用户提供一个交流分享美食体验的社区平台。该平台涵盖了用户注册登录、美食制作方法分享发布、点赞评论互动等功能模块&#xff0c;致力于…