我有以下情况-我想遍历db中的每个元素,并且:
bumped
字段设置为false
然后:
bumped
设置为true
User.updateMany(
{
bumped: false,
creationDate: {
$gte: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000),
},
},
{
$set: {
bumped: true,
},
},
(err, res) => {
//
// What is "res" here? <====== question
},
);
我的问题-回调函数中的res
参数是什么?
Question2 :是否仅对满足条件的这些元素触发回调?
非常感谢您!
答案 0 :(得分:1)
updateMany
函数不会返回更新的文档。它仅返回更新的文档数。
因此,您在这里只能做的事情是先找到所有文档并逐个进行迭代,然后再调用发送邮件功能。
const users = await User.find({
"bumped": false,
"creationDate": {
"$gte": new Date(Date.now() - 30 * 24 * 60 * 60 * 1000),
}
})
const promises = users.map(async(user) => {
await User.updateOne({ _id: user._id }, { $set: { bumped: true }})
// Here you can write your send mail function
})
await Promise.all(promises)