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 }
uniquetrue时创建唯一索引
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 }

📌 注意事项

更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Q复合索引字段顺序怎么定?
A等值条件字段放前面,范围与排序字段放后面。
Q唯一索引插入重复值会怎样?
A报duplicate key error,该文档写入失败。
Q建索引会锁库吗?
A4.2起默认混合构建,构建期间仍可读写,但会占用CPU与IO。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏