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

相关文章
|
人工智能
基于qwen2和qwenvl的自动批改作业应用!
针对作业批改中常见的问题,如低质量作业、大量简单作业耗时、需初筛异常作业等,开发了一款自动批改作业的应用。该应用通过备份作业文件、获取文档内容、利用AI生成评语,并保存关键信息与日志,简化了教师的工作流程,提高了效率。应用设计简洁,易于扩展,支持图片转文字处理,适合教育场景使用。
4340 1
基于qwen2和qwenvl的自动批改作业应用!
|
8月前
|
固态存储 Windows
固态硬盘是分区好还是不分区好?电脑硬盘分区教程
本文介绍了在Win11系统中如何对固态硬盘(SSD)进行分区的详细步骤。内容包括理解硬盘分区的基本原理,以及通过系统自带的磁盘管理工具进行分区的具体操作流程。整个教程共分为八步,从打开磁盘管理界面、压缩卷、创建新分区到最终完成,图文并茂,操作简单明了。适合新手用户快速掌握Win11系统下SSD的分区方法,无需依赖第三方软件即可完成。
939 4
|
5月前
|
存储 数据库
数据库设计三范式
本文介绍了数据库设计中的三范式(1NF、2NF、3NF),通过实例讲解各范式的要求与应用场景。第一范式要求字段原子性,不可再分;第二范式要求消除部分依赖,确保主键决定所有非主键字段;第三范式消除传递依赖。同时指出,范式是参考而非绝对准则,实际设计应结合业务需求灵活处理,以降低维护成本、提升效率。
155 0
|
9月前
|
存储 缓存 网络协议
探讨域名与IP地址的关联性
总结起来说:每次你输入一个易读易记得名称即可方便地让计算机帮你找到那串难以记住但却必须用到精确无误数字串——也就完成了从人类语言向计算机语言转化工作使得两者之间沟能顺畅交流无阻碍发生同时保证数据传输精准性及高效率性质维护整体网络环境稳定运行状态。
1498 53
|
8月前
|
人工智能 关系型数据库 Java
当MySQL遇见AI:使用Vector扩展实现智能语义搜索
传统数据库的关键词搜索已无法满足现代应用对智能语义查询的需求。本文介绍如何通过MySQL的向量扩展(Vector Extension),将大模型产生的文本嵌入向量存储在MySQL中,并实现高效的语义相似度搜索。我们将完整演示从环境准备、数据库表设计、Java应用集成到性能优化的全流程,让您的传统关系型数据库瞬间具备AI智能检索能力,为构建下一代智能应用提供核心数据支撑。
967 3
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
API 开发者 UED
鸿蒙next版开发:ArkTS组件通用属性(形状裁剪)
在HarmonyOS 5.0中,ArkTS引入了形状裁剪的通用属性,支持矩形、圆形、椭圆及自定义路径等多种形状的裁剪和遮罩处理。本文详细解读了clip、clipShape、mask和maskShape属性,并提供了示例代码,帮助开发者实现多样化的界面设计和动画效果。
1095 1
|
存储 供应链 安全
云上数字签名:重塑电子交易信任与安全的基石
尽管云上数字签名具有诸多优势,但部分用户仍对其安全性和法律效力持怀疑态度。这可能导致用户在实际应用中更倾向于使用传统的纸质签名方式。 五、云上数字签名的未来
|
存储 监控 安全
API接口数据获取全流程用户指南
本文介绍了从明确需求到数据存储与管理的API接口数据获取全流程。首先,明确业务需求和选择合适的数据源;接着,准备API接口,包括审查文档、申请密钥和安全存储;然后,构建与发送请求,处理响应与数据;最后,进行数据存储与管理,并持续监控与优化,确保数据的安全与合规。通过这些步骤,用户可以高效地获取和管理数据,为数据分析和业务优化提供支持。