繁体   English   中英

如何使用 MongoDB 和 javascript 管理批量更新脚本的错误?

[英]How to manage errors on bulk update script with MongoDB and javascript?

我目前有一个脚本可以使用 api 调用更新网站上的数据。 我循环遍历数据库中的所有产品,然后拨打 api 电话来更新网站上的数据。

有时在脚本执行过程中会发生错误,因此我无法完成所有更新,因为我无法 go 遍历数据库中的所有产品。 当我重新启动我的脚本时,它总是从头开始(数据库中的第一个产品),所以我永远不会完成我的批量更新。

发生错误后如何继续更新? 例如,如果产品编号 10 发生错误,我如何在不从头重新启动脚本的情况下继续对产品编号 11 进行更新? 有没有跟踪错误的mongoDb function?

我是初学者,我正在尝试了解有关批量更新的逻辑。 我想过把出错的商品ID保存起来,然后在这个ID之后开始更新。 但是,我确信有一个标准程序来管理批量更新错误和失败。

我正在为我的脚本使用 javascript、nodeJS 和 cron。

当您进行 bulkupdate 时,您会在BulkWriteError中收到错误,如果操作已被订购,它将停止执行。

首先,将您的更新分成一些批次,可能是1000或更少或更多,具体取决于您的总数。

其次,无序地运行批量更新可以提高性能,因为下一次更新不会等待当前更新完成。

db.collection.bulkWrite(
   [
      { insertOne : <document> },
      { updateOne : <document> },
      { updateMany : <document> },
   ],
   { ordered : false }
)

第三,检查 id 的错误并将它们推送到您创建的下一个批次,或者将所有错误保留在一个批次中,并在完成所有批量更新后运行。

我们对超过 10 万条记录采用相同的方法,并且在今天运行良好。 如果您或其他任何人有更好的解决方案,我一定会听取并实施。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM