【发布时间】:2011-05-22 19:26:41
【问题描述】:
我有一组消息:
{
messageid: ObjectId
userid: ObjectId
message: string
isread: true|false
}
以及每个用户的消息计数集合:
{
userid: ObjectId
total: int
unread: int
}
当我从“messages”集合中删除一条消息时,我还需要减少“counts”集合中的“total”,并有条件地(如果“messages.isread”== false)减少“未读”字段。
为此,我需要先检索消息,检查其“isread”字段,然后更新计数。在这些操作之间,邮件可能会被标记为已读,然后我会错误地减少“未读”计数。
有没有办法根据一次性收集的结果有条件地更改一个集合中的某些内容?
【问题讨论】:
标签: concurrency mongodb