如何使用 MongoDB 和 javascript 管理批量更新脚本的错误?
How to manage errors on bulk update script with MongoDB and javascript?
我目前有一个脚本可以使用 api 调用更新网站上的数据。
我循环遍历数据库中的所有产品,然后调用 api 来更新网站上的数据。
有时在脚本执行过程中会出现错误,因此我无法完成所有更新,因为我无法遍历数据库中的所有产品。
当我重新启动我的脚本时,它总是从头开始(数据库中的第一个产品),所以我永远不会完成我的批量更新。
发生错误后如何继续更新?
例如,如果产品编号 10 发生错误,我如何在不从头重新启动脚本的情况下继续对产品编号 11 进行更新?是否有跟踪错误的 mongoDb 函数?
我是初学者,我正在尝试了解有关批量更新的逻辑。我想过把出错的商品ID保存起来,然后在这个ID之后开始更新。但是,我确信有一个管理批量更新错误和失败的标准程序。
我正在为我的脚本使用 javascript、nodeJS 和 cron。
批量更新时,您会在 BulkWriteError
中收到错误消息,如果命令操作,它将停止执行。
首先,将您的更新分成一些批次,可能 1000
或更少或更多,具体取决于您总共有多少。
其次,运行无序批量更新可以提高性能,因为下一次更新不会等待当前更新完成。
db.collection.bulkWrite(
[
{ insertOne : <document> },
{ updateOne : <document> },
{ updateMany : <document> },
],
{ ordered : false }
)
第三,检查 ID 的错误并将它们推送到您创建的下一批,或者将所有错误保留在一个批中,并且 运行 一旦您完成所有批量更新。
我们对超过 10 万条记录采用相同的方法,并且在今天运行良好。如果您或其他任何人有更好的解决方案,我一定会听到并实施。
我目前有一个脚本可以使用 api 调用更新网站上的数据。 我循环遍历数据库中的所有产品,然后调用 api 来更新网站上的数据。
有时在脚本执行过程中会出现错误,因此我无法完成所有更新,因为我无法遍历数据库中的所有产品。 当我重新启动我的脚本时,它总是从头开始(数据库中的第一个产品),所以我永远不会完成我的批量更新。
发生错误后如何继续更新? 例如,如果产品编号 10 发生错误,我如何在不从头重新启动脚本的情况下继续对产品编号 11 进行更新?是否有跟踪错误的 mongoDb 函数?
我是初学者,我正在尝试了解有关批量更新的逻辑。我想过把出错的商品ID保存起来,然后在这个ID之后开始更新。但是,我确信有一个管理批量更新错误和失败的标准程序。
我正在为我的脚本使用 javascript、nodeJS 和 cron。
批量更新时,您会在 BulkWriteError
中收到错误消息,如果命令操作,它将停止执行。
首先,将您的更新分成一些批次,可能 1000
或更少或更多,具体取决于您总共有多少。
其次,运行无序批量更新可以提高性能,因为下一次更新不会等待当前更新完成。
db.collection.bulkWrite(
[
{ insertOne : <document> },
{ updateOne : <document> },
{ updateMany : <document> },
],
{ ordered : false }
)
第三,检查 ID 的错误并将它们推送到您创建的下一批,或者将所有错误保留在一个批中,并且 运行 一旦您完成所有批量更新。
我们对超过 10 万条记录采用相同的方法,并且在今天运行良好。如果您或其他任何人有更好的解决方案,我一定会听到并实施。