【发布时间】:2022-01-21 23:52:38
【问题描述】:
类似的功能是否可行:
let Item = mongoose.model('Item')
let updatedItems = [updatedItem1, updatedItem2]
let updatedItemIds = [updatedItem1._id, updatedItem2._id]
Item.updateMany({_id: {$in: updatedItemIds }}, updatedItems) // this wont work
类似于:
updatedItems.forEach( item => {
Item.updateOne({_id: item._id}, item)
})
我试图避免多次调用服务器,我知道有一个 bulkWrite 选项,我可以这样做:
bulk = []
updatedItems.forEach( item => {
let updateDoc = {
'updateOne': {
'filter': { '_id': item._id },
'update': item,
'upsert': false
}
}
bulk.push(updateDoc)
})
Item.collection.bulkWrite(bulk)
但这感觉效率低下,因为它似乎需要加载每个自定义查询,尽管我对后台的 bulkWrite 并不了解。我只是想问一下 bulkWrite 是否是这里唯一的选择。
编辑: 我知道上面的第一个查询不起作用,但它是为了显示我正在寻找什么功能 - 将更新的对象传递给 Mongoose,并使这些对象与它们各自的文档匹配并更新。
【问题讨论】:
标签: mongodb mongoose mongoose-schema mongoose-web-server