insertMany()(批量插入)

最后更新:2026-10-09

insertMany()(批量插入)

insertMany()用于一次向集合插入多条文档,例如`db.users.insertMany([{ name: 'A' }, { name: 'B' }])`。ordered为true(默认)时按顺序逐条插入,遇到错误立即停止;为false时继续尝试剩余文档。返回结果包含acknowledged和insertedIds,后者是文档索引到_id的映射。批量插入比循环调用insertOne()少很多网络往返,是数据初始化、数据迁移的首选。

分类写入
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

db.<集合>.insertMany(<文档数组>, { ordered: <bool>, writeConcern: <选项> })

⚙️ 参数

文档数组要插入的文档数组,元素为BSON文档。
ordered可选。true时遇错即停并回滚已插入部分,false时跳过错误继续,默认true。
writeConcern可选。写入关注级别。

返回值:包含acknowledged和insertedIds(索引到_id的映射)的结果对象。

▶ 示例

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

// insertMany:一次插入三条用户文档
db.users.insertMany([
  { name: 'Alice', age: 21 },
  { name: 'Bob', age: 25 },
  { name: 'Cara', age: 30 }
])

运行结果:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId('64c8a1b20000000000000001'),
    '1': ObjectId('64c8a1b20000000000000002'),
    '2': ObjectId('64c8a1b20000000000000003')
  }
}

📌 注意事项

📚 相关教程

❓ 常见问题

QinsertMany和insertOne有什么区别?
AinsertMany()一次写入多条文档,仅一次网络往返;insertOne()一次只写一条。批量场景用insertMany()性能远好于循环insertOne()。
QinsertMany的ordered参数有什么用?
Aordered为true时按顺序插入,遇到错误立即停止并回滚本批;为false时跳过出错文档继续插入剩余文档。
QinsertMany部分失败时返回什么?
A返回acknowledged和insertedIds,其中只包含成功插入的文档索引映射;失败详情在捕获的BulkWriteError里。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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