У меня есть набор сообщений:
{
messageid: ObjectId
userid: ObjectId
message: string
isread: true|false
}
и набор сообщений для каждого пользователя:
{
userid: ObjectId
total: int
unread: int
}
Когда я удаляю сообщение из коллекции "сообщений", мне также необходимо уменьшить "total" в коллекции "counts" и условно (если "messages.isread" = false) также уменьшает "непрочитанное" поле.
Для этого мне нужно сначала получить сообщение, проверить его "isread", а затем обновить подсчеты. Существует вероятность того, что сообщение будет помечено как прочитанное между этими действиями, тогда я уменьшу "непрочитанные" подсчеты неправильно.
Есть ли способ условно изменить что-то в одной коллекции на основе результатов другой коллекции за один снимок?