Вычитание и сложение в наборе реплик mongodb - PullRequest
0 голосов
/ 17 октября 2018

Итак, я столкнулся с проблемой mongodb (3.6.4), в которой используются кластерные реплики, сложения / вычитания наборов чисел, и мне нужна помощь для их решения.

Есть коллекция players, документы игроков имеют номерстолбец balance, который по умолчанию равен 0.

Теперь столбец баланса обновляется путем добавления или вычитания его, и он хорошо работает, если операции между сохранениями превышают ~ 200 мс.

Еслия пытаюсь обновить его слишком быстро, одно из обновлений теряется.

Цикл выглядит так:

1. Find player document
2. Add some number to balance
3. Save player document
4. Repeat

Как я понимаю, в большинстве случаев последнее обновление не синхронизируется между наборами реплик ив другом цикле я получаю старые данные документа.По какой-то причине он пишет в одну реплику и читает в другую.

Так что мой вопрос заключается в том, как предотвратить потерю таких данных?

Помогло бы обновление mongodb с этим?

db.players.update(
   { _id: "id" },
   { $inc: { balance: -2 } }
 )

Прямо сейчас мы не используем это, потому что мы регистрируем значения до / после / количества в другой коллекции тоже

...