createIndexes(创建索引)
最后更新:2026-10-09
createIndexes(创建索引)
createIndexes为集合创建索引,支持单字段、复合、唯一、TTL、文本、地理空间等类型。mongosh中常用辅助方法db.collection.createIndex({ field: 1 })。创建索引会占用资源,大集合上构建期间仍可读写(4.2起默认混合构建)。复合索引字段顺序影响查询能力。
| 分类 | 管理命令 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
db.orders.createIndex({ userId: 1, createdAt: -1 })
db.users.createIndex({ email: 1 }, { unique: true })
db.runCommand({ createIndexes: "orders", indexes: [{ key: { userId: 1 }, name: "user" }] })
⚙️ 参数
| key | 索引键与方向,如{ userId: 1, createdAt: -1 } |
|---|---|
| unique | true时创建唯一索引 |
| name | 索引名,省略时自动生成 |
返回值:返回numIndexesBefore、numIndexesAfter与ok字段
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// createIndexes:复合索引与唯一索引
use shop
db.orders.createIndex({ userId: 1, createdAt: -1 })
db.users.createIndex({ email: 1 }, { unique: true })
运行结果:
{ numIndexesBefore: 1, numIndexesAfter: 2, ok: 1 }
📌 注意事项
- 复合索引字段顺序影响匹配与排序能力
- 唯一索引冲突时insert/update报duplicate key
- 索引也占磁盘与内存,别给每个字段都建
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q复合索引字段顺序怎么定?
A等值条件字段放前面,范围与排序字段放后面。
Q唯一索引插入重复值会怎样?
A报duplicate key error,该文档写入失败。
Q建索引会锁库吗?
A4.2起默认混合构建,构建期间仍可读写,但会占用CPU与IO。