Mongoose推送 - 查找或更新对象数组

时间:2017-11-20 09:55:43

标签: javascript mongoose

我的情况如下:

我有一个session集合,每个会话都是一个聊天室。

当用户发送新邮件时,应该通知其他用户,但为了防止垃圾邮件,我需要检查用户是否在过去10分钟内收到了通知邮件。

因此,我的会话集合包含notification个对象数组,其中包含:sessionIduserIddate

每当有人发送新邮件时,我都必须发送邮件并推送到notifications列,但它应覆盖userId以阻止通知列增长。

这是我尝试过的:

sessionSchema .findByIdAndUpdate(sessionId, { $push: { notifications: { userId: userId, date: moment().utc().toDate() } } }, callback)

然而,随着推动,该列不断增长。如何使用push来覆盖某个userId已创建的通知?

1 个答案:

答案 0 :(得分:1)

也许,尝试将查询中的选项添加到DB。

sessionSchema
          .findByIdAndUpdate(sessionId, {
            $push: {
              notifications: {
                userId: userId,
                date: moment().utc().toDate()
              }
            }
          }, { new: true }, callback)