gpt4 book ai didi

node.js - 使用for循环mongoose批量插入文档

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:34 31 4
gpt4 key购买 nike

为什么这不会为我插入 20 个文档?

for (let i = 0; i <= 20; i++) {
const [updated] = await Promise.all([
Job.findOneAndUpdate(
{ _id: id },
{
$set: {
status: 'something'
}
},
{ upsert: true, new: true }
),
User.findOneAndUpdate(
{ _id: userId },
{
$set: { assigned: true }
},
{ upsert: true, new: true }
)
])
}

或者我应该使用reduce和Promise解析?上面的查询有效,只是它没有插入 20 个文档,而是插入了 1 个文档。

最佳答案

如果你有id数组,那么你可以使用bulkWrite

const id = ['844646464', '45646546546', '45646546546']

Model.bulkWrite(
req.body.idArray((id) => {
return ({
updateOne: {
filter: { _id: id },
update: { $set: { status: 'something' } },
upsert: true
}
})
})
})

它将创建一个类似这样的请求

bulkWrite([
{ updateOne: { filter: { _id: id }, update: { $set: { status: 'something' } } },
{ updateOne: { filter: { _id: id }, update: { $set: { status: 'something' } } },
{ updateOne: { filter: { _id: id }, update: { $set: { status: 'something' } } }
])

它可以通过单个响应向服务器发出单个请求,从而有效地执行所有更新。

关于node.js - 使用for循环mongoose批量插入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51229161/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com