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

相关文章
|
11月前
|
Java 数据库连接 调度
xxljob执行源码分析
本文深入解析XXL-JOB源码,涵盖架构设计、核心执行流程与关键线程机制。包括任务调度、快慢线程池分离、注册与心跳检测、失败重试告警、日志清理及时间轮原理,结合图文详解各组件实现逻辑,助你全面掌握分布式任务调度底层机制。
 xxljob执行源码分析
|
11月前
|
负载均衡 Java Nacos
微服务网关与配置中心
本文介绍了基于Spring Cloud Gateway实现微服务网关的完整流程,涵盖路由转发、负载均衡、全局过滤器与身份校验、用户信息传递及配置中心Nacos的集成。通过自定义GlobalFilter实现JWT鉴权,并利用ThreadLocal在微服务间透传用户信息;针对Feign调用场景,设计无状态内部接口以提升通用性;最后通过Nacos统一管理各服务配置文件,支持热更新,实现配置集中化与动态化管理。
 微服务网关与配置中心
|
11月前
|
存储 算法 BI
xxljob本地运行
本文介绍XXL-JOB分布式任务调度框架的部署与使用,涵盖源码获取、服务端数据库初始化、配置启动、客户端注册及定时任务测试全过程,助您快速搭建并运行调度系统。
|
11月前
|
存储 消息中间件 开发框架
应用架构图
技术架构是将业务需求转化为技术实现的关键过程,涵盖分层设计、技术选型与系统间关系梳理。本文详解单体与分布式架构,包括展现层、业务层、数据层及基础层的设计原则,并阐述应用内外调用关系与边界划分,助力构建清晰的技术体系。
 应用架构图
|
11月前
|
存储 关系型数据库 调度
|
11月前
|
缓存 NoSQL 关系型数据库
微服务原理篇(Canal-Redis)
该文章内容详细且实用
 微服务原理篇(Canal-Redis)
|
11月前
|
uml C语言
系统时序图
时序图(Sequence Diagram)是UML中描述对象间消息传递时间顺序的交互图。横轴为对象,纵轴为时间,通过生命线、控制焦点和消息等元素,直观展现系统动态协作过程,强调交互的时间顺序与并发行为,常用于分析和设计系统逻辑。
|
11月前
|
存储 缓存 安全
One Trick Per Day
本文介绍Java开发中的6条关键规范:避免Map初始化大小不当,禁用Executors创建线程池以防OOM,Arrays.asList后不可修改,遍历Map优先使用entrySet,SimpleDateFormat避免static并发问题,以及并发修改记录时合理加锁。遵循这些原则可提升系统稳定性与性能。
One Trick Per Day
|
11月前
|
存储 NoSQL 物联网
MongoDB应用场景
MongoDB适用于社交、游戏、物流、物联网及直播等场景,擅长处理数据量大、读写频繁、事务要求不高的应用。其灵活的文档模型支持高效存储用户信息、订单状态、设备日志等,结合地理位置索引与内嵌数组,实现高性能查询与实时分析,是海量非结构化数据存储的理想选择。(238字)
|
11月前
|
存储 JSON NoSQL
MongoDB常用命令
本文介绍MongoDB数据库操作,包括数据库与集合的创建、删除,文档的增删改查及分页排序查询。以文章评论数据存储为例,详解CRUD操作及注意事项,如_id主键生成、数据类型处理、批量操作异常捕获等,适用于初学者快速掌握MongoDB基本用法。(238字)
MongoDB常用命令