我的情况如下:
我有一个session
集合,每个会话都是一个聊天室。
当用户发送新邮件时,应该通知其他用户,但为了防止垃圾邮件,我需要检查用户是否在过去10分钟内收到了通知邮件。
因此,我的会话集合包含notification
个对象数组,其中包含:sessionId
,userId
和date
每当有人发送新邮件时,我都必须发送邮件并推送到notifications
列,但它应覆盖userId
以阻止通知列增长。
这是我尝试过的:
sessionSchema
.findByIdAndUpdate(sessionId, {
$push: {
notifications: {
userId: userId,
date: moment().utc().toDate()
}
}
}, callback)
然而,随着推动,该列不断增长。如何使用push来覆盖某个userId已创建的通知?
答案 0 :(得分:1)
也许,尝试将查询中的选项添加到DB。
sessionSchema
.findByIdAndUpdate(sessionId, {
$push: {
notifications: {
userId: userId,
date: moment().utc().toDate()
}
}
}, { new: true }, callback)