gpt4 book ai didi

mongodb - 如何在 MongoDB 批量插入期间从错误中恢复

转载 作者:可可西里 更新时间:2023-11-01 09:09:01 32 4
gpt4 key购买 nike

我正在使用 MongoDB 创建一个 Web 应用程序。现在我正在创建管理页面,使管理员能够在网站上添加或删除项目。页面将新增批量导入功能,可以从本地CSV文件中导入内容。问题是如何实现该功能。

最简单的方法是将上传的 CSV 文件转换为 JSON,然后使用 db.items.insert([{...}, {...}, ...]) 插入它们声明。

如果db.getLastError()返回null,导入成功。没有问题。

但是,如果批量插入时出现错误怎么办?因为没有事务,插入的项不能回滚。因此,重试插入将导致重复的文档。

解决这个问题的最佳方法是什么?

最佳答案

在 MongoDB 2.4 中,如果 bulk insert 中的任何文档出现错误,您只会得到最后一个异常。 .

失败回滚

如果您想对批量插入使用事务性方法(即所有插入都必须成功,否则将回滚批处理),那么您应该在插入的文档中包含一个标识字段,如 batch_id。如果出现任何故障,您可以删除从该批处理中插入的任何文档并适本地处理错误(重试或失败)。

批量插入方法

如果您插入分片集群:

  • ContinueOnError 标志设置为 false 以确保批量插入在出现第一个错误时停止
  • 处理异常并决定是回滚批处理还是从导致异常的文档之后的文档开始重新插入

如果您正在插入分片集群:

关于mongodb - 如何在 MongoDB 批量插入期间从错误中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16210863/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com