MongoDB 索引类型详解

MongoDB 索引类型详解

在 MongoDB 中,索引是提高查询效率、优化数据库性能的重要手段。MongoDB 支持多种类型的索引,每种索引类型适用于不同的查询需求和场景。本文将详细介绍 MongoDB 中几种常见的索引类型、示例及其限制。

1. 单字段索引(Single Field Index)
  • 示例 :对 age 字段创建单字段索引。

    javascript 复制代码
    db.users.createIndex({ age: 1 });
  • 限制:只能对单个字段进行索引,无法优化多字段查询¹。

2. 复合索引(Compound Index)
  • 示例 :对 nameage 字段创建复合索引。

    javascript 复制代码
    db.users.createIndex({ name: 1, age: -1 });
  • 限制:最多包含 32 个字段,查询时必须包含索引的前缀字段²。

3. 多键索引(Multikey Index)
  • 示例 :对包含数组的 tags 字段创建多键索引。

    javascript 复制代码
    db.articles.createIndex({ tags: 1 });
  • 限制:一个集合中不能有多个多键索引,且不能与文本索引或稀疏索引组合使用²。

4. 地理空间索引(Geospatial Index)
  • 示例 :对 location 字段创建 2dsphere 地理空间索引。

    javascript 复制代码
    db.places.createIndex({ location: "2dsphere" });
  • 限制:只能用于地理空间数据,且查询必须使用地理空间操作符²。

5. 文本索引(Text Index)
  • 示例 :对 description 字段创建文本索引。

    javascript 复制代码
    db.products.createIndex({ description: "text" });
  • 限制:每个集合只能有一个文本索引,且不支持中文分词²。

6. 哈希索引(Hashed Index)
  • 示例 :对 user_id 字段创建哈希索引。

    javascript 复制代码
    db.sessions.createIndex({ user_id: "hashed" });
  • 限制:仅支持等值查询,不支持范围查询²。

7. 通配符索引(Wildcard Index)
  • 示例 :对 userMetadata 字段及其所有子字段创建通配符索引。

    javascript 复制代码
    db.users.createIndex({ "userMetadata.$**": 1 });
  • 限制 :性能可能不如特定字段索引,且不支持 $text 操作符²。

8. TTL 索引(TTL Index)
  • 示例 :对 createdAt 字段创建 TTL 索引,使文档在指定时间后自动删除。

    javascript 复制代码
    db.logs.createIndex({ createdAt: 1 }, { expireAfterSeconds: 3600 });
  • 限制:只能用于单个日期字段,且字段类型必须是日期类型²。

总结

这些索引类型可以帮助优化查询性能,满足不同的应用需求。选择合适的索引类型可以显著提高 MongoDB 的查询效率。如果你在项目中有使用哪种索引,或者需要进一步了解某种索引的具体用法,欢迎在评论区讨论!

相关推荐
故作春风11 小时前
elpis-core 核心从入门到理解
后端·架构·node.js
万敏11 小时前
Vue3 全栈实战第九周:Node.js + Express 后端从零搭建实战记录
vue.js·node.js·全栈
我是唐青枫15 小时前
MongoDB 从零到能用:文档、CRUD、聚合与 Node.js 实战
mongodb
爱吃红星柚16 小时前
【学习】Elpis 抽离与发布 npm 包
前端·前端框架·node.js
梦帮科技17 小时前
Next.js 16 模块化单体实战:App Router、领域模块与 Route Handler 分层
css·数据结构·链表·正则表达式·node.js·json·html5
梦帮科技17 小时前
从 Guest 到 Platinum:Prompt 配额、API Key 与访问控制的安全闭环
javascript·git·架构·node.js·reactjs·html5·visual studio
秋秋小事18 小时前
node prisma+postgreSQL中的查询与过滤
node.js
右耳朵猫AI18 小时前
Node.js周刊2026W37 | 三处进程崩溃修复、fs 内置 glob、Workers 模块注册表、Vitest 5.0
javascript·后端·node.js
右耳朵猫AI18 小时前
Web前端周刊2026W37 | Shopify 转原生、React 编译 Rust 化、Vitest 5.0、Rslib 1.0
前端·javascript·react.js·typescript·node.js
秋秋小事18 小时前
node prisma中的crud
node.js