我有一系列信息:
{
messageid: ObjectId
userid: ObjectId
message: string
isread: true|false
}
以及每个用户的邮件计数集合:
{
userid: ObjectId
total: int
unread: int
}
当我从"messages"集合中删除一条消息时,我还需要减少"counts"集合中的"total",并有条件地(如果"messages.isread"==false)减少"unread"字段.
为此,我需要首先检索消息,判断其"isread"字段,然后更新计数.在这些操作之间,邮件可能会被标记为已读,然后我会错误地减少"未读"计数.
有没有一种方法可以根据其他集合的结果一次性有条件地更改一个集合中的某些内容?