簡體   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