常见索引类型与用途
| 类型 | 定义方式 | 适合场景 |
|---|---|---|
| 单字段 | { field: 1 } | 单条件等值与范围过滤 |
| 复合 | { a: 1, b: -1 } | 多条件组合与排序(注意字段顺序) |
| 多键 | 数组字段自动为多键 | 数组元素匹配 |
| 文本 | { field: "text" } | 词项检索与相关度排序 |
| 地理 | { loc: "2dsphere" } | 距离与区域查询 |
| TTL | { expireAt: 1 } + expireAfterSeconds | 定时过期清理 |
| 唯一 | { email: 1 } + unique | 唯一性约束 |
| 部分 | + partialFilterExpression | 只索引子集,节省空间 |
| 稀疏 | + sparse | 跳过缺失字段的文档 |
| 哈希 | { user_id: "hashed" } | 等值查询与哈希分片 |
| 通配符 | { "attrs.$**": 1 } | 字段名不固定的子文档 |
生产集合常见配置是“若干复合索引 + 必要的唯一约束”,不是索引越多越好。