bulkWrite()(批量混合写操作)

最后更新:2026-10-09

bulkWrite()(批量混合写操作)

bulkWrite()在一次调用中按顺序执行多条不同类型的写操作,支持insertOne、updateOne、updateMany、replaceOne、deleteOne、deleteMany六种操作。每条操作是包含操作类型和文档的独立对象,例如`db.users.bulkWrite([{ insertOne: { document: { name: 'A' } } }])`。返回结果按操作类型分组统计,适合数据迁移和批量导入场景。

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

📝 语法

db.<集合>.bulkWrite(<操作数组>, { ordered: <bool> })

⚙️ 参数

操作数组写操作对象数组,每项形如{insertOne: {document: ...}}。
ordered可选。true遇错即停,false跳过错误继续,默认true。

返回值:BulkWriteResult,按操作类型统计的计数器对象。

▶ 示例

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

// bulkWrite:一次完成插入、更新、删除三种操作
db.users.bulkWrite([
  { insertOne: { document: { name: 'Dana', age: 28 } } },
  { updateOne: { filter: { name: 'Alice' }, update: { $set: { age: 23 } } } },
  { deleteOne: { filter: { name: 'Bob' } } }
])

运行结果:

{
  acknowledged: true,
  insertedCount: 1,
  matchedCount: 1,
  modifiedCount: 1,
  deletedCount: 1
}

📌 注意事项

📚 相关教程

❓ 常见问题

QbulkWrite比循环调用快多少?
AbulkWrite()只发一次网络请求执行全部操作,比循环调用单个方法快得多,尤其适合数据迁移和批量导入。
QbulkWrite支持哪些操作类型?
A支持insertOne、updateOne、updateMany、replaceOne、deleteOne、deleteMany六种,可在一次调用中混用。
QbulkWrite的ordered参数怎么用?
Aordered为true(默认)时按顺序执行遇错即停;为false时跳过失败操作继续执行后续操作,适合允许部分成功的批处理。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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