createIndexes()(批量创建索引)

最后更新:2026-10-09

createIndexes()(批量创建索引)

createIndexes()一次创建多个索引,例如`db.users.createIndexes([{ key: { age: 1 } }, { key: { email: 1 }, unique: true }])`。与循环调用createIndex()相比,它把索引构建请求合并为一次,部署初始化和迁移时效率更高。每条索引定义包含key(必填)和可选选项。注意:_id索引始终存在且不能删除。

分类索引与管理
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

db.<集合>.createIndexes([<索引定义>, ...])

⚙️ 参数

索引定义数组每个元素含key字段和可选选项,如{key: {age: 1}, unique: true}。

返回值:创建成功后的索引名称列表。

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// createIndexes:一次创建年龄索引和邮箱唯一索引
const names = db.users.createIndexes([
  { key: { age: 1 } },
  { key: { email: 1 }, unique: true }
])
names

运行结果:

[ 'age_1', 'email_1' ]

📌 注意事项

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

📚 相关教程

❓ 常见问题

QcreateIndexes和createIndex哪个好?
A需要一次建多个索引时用createIndexes(),一次请求完成;单个索引用createIndex()更直观。
QcreateIndexes能混合普通和唯一索引吗?
A可以,在各自的key外带选项即可,例如{key: {age: 1}}和{key: {email: 1}, unique: true}。
Q重复创建同名索引会怎样?
A相同定义的索引已存在时会跳过创建,返回现有索引名,不会报错。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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