4-MongoDB索引知识

简介: MongoDB索引可大幅提升查询效率,避免全集合扫描。支持单字段、复合、地理空间、文本及哈希索引,采用B树结构,适用于多种查询场景,提升系统性能。

4.1 概述

索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。

如果查询存在适当的索引,MongoDB可以使用该索引限制必须检查的文档数。 索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。索引存储特定字段或一组字段的值,按字段值排序。索引项的排序支持有效的相等匹配和基于范围的查询操作。此外,MongoDB还可以使用索引中的排序返回排序结果。 MongoDB索引使用B树数据结构(确切的说是B-Tree,MySQL是B+Tree)

官网文档:https://docs.mongodb.com/manual/indexes/

4.2 索引的类型

4.2.1 单字段索引

MongoDB支持在文档的单个字段上创建用户定义的升序/降序索引,称为单字段索引(Single Field Index)。 对于单个字段索引和排序操作,索引键的排序顺序(即升序或降序)并不重要,因为MongoDB可以在任何方向上遍历索引。

4.2.2 复合索引

MongoDB还支持多个字段的用户定义索引,即复合索引(Compound Index)。复合索引中列出的字段顺序具有重要意义。例如,如果复合索引由 { userid: 1, score: -1 } 组成,则索引首先按userid正序排序,然后在每个userid的值内,再在按score倒序排序。

4.2.3 其他索引

地理空间索引(Geospatial Index)

为了支持对地理空间坐标数据的有效查询,MongoDB提供了两种特殊的索引:返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引。

文本索引(Text Indexes)

MongoDB提供了一种文本索引类型,支持在集合中搜索字符串内容。这些文本索引不存储特定于语言的停止词(例如“the”、“a”、“or”), 而将集合中的词作为词干,只存储根词。

哈希索引(Hashed Indexes)

为了支持基于散列的分片,MongoDB提供了散列索引类型,它对字段值的散列进行索引。这些索引在其范围内的值分布更加随机,但只支持相等匹配,不支持基于范围的查询。

相关文章
|
5月前
|
前端开发 数据可视化
什么是低代码
该界面为低代码平台,支持通过拖拽方式快速生成前端表单页面,提升开发效率。包含可视化操作与组件配置,适用于快速搭建业务表单。参考文档详见附件。
|
存储 数据可视化 C语言
[iOS研习记]聊聊iOS中的Mach-O
Mach-O的全称为Mach Object,是OS X与iOS上的一种可执行文件格式。Mach本身指一种操作系统的微内核标准,被用于OS X与iOS系统的内核中。相信对于移动端的iOS开发者来说,对Mach-O文件一定不陌生,我们编译打包的iOS IPA文件,内部其实就有一个可执行的Mach-O文件,我们开发的framework和.a等动态库静态库中,也会包含Mach-O文件,本篇文章,我们就来详细看看Mach-O中究竟放的是什么,Mach-O的结构是怎样的。
1333 0
|
JavaScript 关系型数据库 应用服务中间件
Centos7安装wiki.js
Centos7安装wiki.js
1165 0
|
缓存 Linux
如何创建Linux交换文件?Linux交换文件最新创建方法
Swap是Linux中的虚拟内存空间,用于在物理内存不足时将非活动进程移至磁盘,从而优化活动进程的性能。通过创建交换文件(如1GB),可灵活调整交换空间而无需重新分区。步骤包括:使用`fallocate`或`dd`创建文件、设置权限 (`chmod 600`)、格式化 (`mkswap`)、启用交换 (`swapon`)、修改`/etc/fstab`以持久化配置,以及调整`vm.swappiness`值(默认60,建议从10开始)来平衡内存与交换的使用。最后通过`swapon -s`检查状态并重启生效。此方法适用于VPS和专用服务器,需以root用户操作。
1053 2
|
SQL Java 关系型数据库
IDEA+Java+SSM+JSP+Mysql实现Web图书管理系统
IDEA+Java+SSM+JSP+Mysql实现Web图书管理系统
1042 0
IDEA+Java+SSM+JSP+Mysql实现Web图书管理系统
|
存储 人工智能 运维
无影分支机构场景解决方案,助力新康众实现门店安全高效管理
无影分支机构场景解决方案助力新康众解决门店PC运维管理难度大、安全风险高等问题,同时让客户门店的工作环境更加整洁,能耗更低。
3022 1
无影分支机构场景解决方案,助力新康众实现门店安全高效管理
|
机器学习/深度学习 算法 数据挖掘
cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks
本章主要内容: 本章首先介绍了网络中社区community(或cluster / group)的概念,以及从社会学角度来证明了网络中社区结构的存在性。 接下来介绍了modularity概念衡量community识别效果。 然后介绍了Louvain算法1识别网络中的community。 对于overlapping communiteis,本章介绍了BigCLAM2 方法来进行识别。
cs224w(图机器学习)2021冬季课程学习笔记16 Community Detection in Networks
|
移动开发 搜索推荐 API
《钉钉工作台速成手册》全新发布!
《钉钉工作台速成手册》电子书将从什么是钉钉工作台为开篇,带你从了解钉钉工作台到学会开发工作台全方位讲解。同钉钉一起,以“数字化”为业务思想,打造服务匹配精准、管理灵活可控、使用简单高效的一站式组织工作台。
2606 0
《钉钉工作台速成手册》全新发布!
|
Java 数据库连接 数据库
Mybatis-Plus 动态表名3.4.3.4,3.4,3.1.2
Mybatis-Plus 动态表名3.4.3.4,3.4,3.1.2
1832 0
Mybatis-Plus 动态表名3.4.3.4,3.4,3.1.2
|
XML 存储 Android开发
【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 )
【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 )
785 0
【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 )

热门文章

最新文章