У меня есть простой сценарий двух объектов: post; удары (т.е. вверх).Поддержание общего количества наборов в другой коллекции
Пример поста:
{_id: 'happy_days', 'title': 'Happy days', text: '...', bumps: 2}
Пример шишка:
{_id: {user: 'jimmy', post: 'happy_days'}}
{_id: {user: 'hans', post: 'happy_days'}}
Вопрос: как я могу поддерживать правильный bumps
подсчет в должности при всех обстоятельствах (и неудач)?
Метод, который я придумал до сих пор:
- Чтобы шишка, upsert и проверить на существование. Только если вставлено, увеличьте значение
bumps
. - Чтобы удалить, удалить и проверить на существование. Только если удалено, уменьшите
bumps
count.
Выше терпит неудачу, если приложение падает между два опсом и единственным способом исправить статистику выпуклостей является запросить все документы в коллекции рельефности и пересчитать все оффлайн (т.е. нет никакого способа узнать, какой пост он неправильно удары рассчитывать).
Одна замечательная вещь, которая пришла ко мне вчера, заключалась в использовании лимитов в подписке оператора $ inc, чтобы остановить счетчики от истечения срока действия ниже 0 и т. Д. И т. Д., К сожалению, он был классифицирован как часть большего и более ... unweidly JIRA условного выполнение запроса. Хотя я все еще думаю, что это была хорошая идея – Sammaye