我正在尋找一種在一條指令中更新多個 MongoDB 檔案的方法。我知道有一個 updateMany() 查詢,但它需要一個嚴格的過濾器引數才能更新多個檔案。
我有一個我想更新的物件陣列,如下所示:
const objectsToUpdate = [
{ _id : 1, field : "a" },
{ _id : 2, field : "b" },
{ _id : 3, field : "c" }
]
該陣列基于我從 FTP 服務器檢索的檔案。我根據資料庫檢查這個檔案,如果有差異,我會填充它。我可以遍歷陣列并執行 findOneAndUpdate() 查詢,但我必須在一個任務中處理多達 5000 個檔案。
我正在尋找 insertMany() 的更新對應項,其中檔案由 _id 查找并在一個查詢中更新。這對貓鼬可行嗎?
uj5u.com熱心網友回復:
您可以使用bulkWrite它比多個更快,updateOne因為只有一次往返 MongoDB。
const bulkOps = objectsToUpdate.map(obj => {
return {
updateOne: {
filter: {
_id: obj._id
},
// If you were using the MongoDB driver directly, you'd need to do
// `update: { $set: { field: ... } }` but mongoose adds $set for you
update: {
field: obj[field]
}
}
}
})
MongooseModel.bulkWrite(bulkOps).then((res) => {
console.log("Documents Updated", res.modifiedCount)
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/438873.html
