Я начинаю с Монго, и мне интересно: как лучше всего справиться с условиями гонки в Монго?
Например, если у меня есть документ с полем с именем version, установленным в 1, и пользователь A обновляет его до версии 2, когда пользователь B пытается обновить его с версии 1 (версия, которую получил пользователь B), он должен уведомить об этом Пользователь B, что запись была обновлена.
Одним из решений является использование findAndModify
с использованием поля версии в качестве критерия для запроса.
Например:
db.things.findAndModify({query: { version: "1"}, update: { $set: {Title: "New Title"}}})
Однако проблема здесь в том, что, если версия имеет , увеличенная, это вернет ноль. Проблема в том, что это будет неотличимо от записи, которая была удалена, поэтому необходимо будет использовать второй запрос, чтобы проверить, существует ли еще документ, чтобы подтвердить, что обновлена только его версия.
Так что это мой наивный подход. Я задаюсь вопросом: есть ли более подходящий шаблон для этого в Монго, который был бы более эффективным?