SuperAPI AI 工具集

mongodb-index-creation

数据与分析

查看项目

更新于 10-16 09:51

技能介绍

用途:该技能用于掌握 MongoDB 索引创建与各类索引,通过合理的索引策略显著提升查询性能。

主要能力:

  • 单字段索引:加速针对单一字段的查询、排序与范围查询($gt、$lt)。
  • 复合索引:多字段索引,字段顺序很重要,示例 db.orders.createIndex({ status: 1, createdAt: -1 })。
  • 唯一索引:createIndex({ email: 1 }, { unique: true }) 防止重复值。
  • 稀疏索引:sparse: true 跳过 null 或缺失字段,可减少索引体积,常与唯一索引组合允许多个 null。
  • 文本索引:title、content 等字段设 text,配合 $text 与 $search 做全文检索,支持 weights 设置权重。
  • 地理空间索引:2dsphere,配合 $near 与 $maxDistance 查询附近地点。
  • TTL 索引:expireAfterSeconds 自动删除过期文档,如会话、临时日志;MongoDB 每分钟检查一次,删除可能延迟最多一分钟。

必要用法:

  • 创建:await collection.createIndex({ email: 1 });查看索引:collection.indexes();删除:dropIndex('name') 或 dropIndexes()。
  • 索引选项:unique、sparse、background、expireAfterSeconds、collation、name。
  • 设计遵循 ESR 规则:Equality、Sort、Range 顺序。
  • 覆盖查询:索引包含查询与投影所需全部字段,且 _id: 0,可避免读取文档。
  • 监控:MongoDB 4.4+ 可用 db.collection.aggregate([{ $indexStats: {} }]) 查看使用情况,删除低使用索引。
  • 用 explain() 验证是否走索引(IXSCAN)。

适用场景:频繁过滤或排序的字段、状态加时间排序的订单查询、全文搜索、位置检索、需要自动过期的数据等。

限制与注意:字段顺序影响复合索引效果;不要过度索引,索引会消耗存储与内存;无索引的复杂正则和排序较慢;大型文本索引占用内存;应及时清理不再使用的索引。