我想使用Mongoose在我的Node.js后端中通过条件更新多种设计
尝试更新列表中所有用户的可见通知。
我当前的方法有效,但是涉及很多调用
await notificationIDs.forEach(async noticeID => {
await User.updateOne(
{ "notifications._id": noticeID },
{ $set: { "notifications.$.seen": true } }
);
});
想在一个电话中更新
答案 0 :(得分:0)
要对一个查询执行此操作,可以将updateMany()方法与$in运算符配合使用:
await User.updateMany(
{ "notifications._id": {$in: notificationIDs} },
{ $set: { "notifications.$.seen": true } }
);
答案 1 :(得分:0)
您可以使用:
更新它 await User.update({ "notifications._id": {$in: notificationIDs} },
{ $set: { "notifications.$.seen": true } },
{multi: true});
答案 2 :(得分:0)
要对单个查询执行此操作,请使用db.collection.updateMany()。
return new Promise((resolve, reject) => {
UserModel.updateMany({ "notifications._id": notificationIDs }, {$set: { "notifications.$.seen": true } }, { upsert: true, new: true }).exec((err, response) => {
if (err) {
reject({ status: 500, message: 'Internal Server Error', data: err });
} else {
resolve({ status: 200, message: 'Notification Updated Successfully.' });
}
});
});