Я знаю, что я не могу заблокировать один файл mongodb, на самом деле нет возможности блокировать коллекцию.
Однако у меня есть этот сценарий, где мне кажется, что мне нужно каким-то образом предотвратить изменение одного документа (или процесса, неважно) от изменения документа. Вот мой сценарий.
У меня есть коллекция, содержащая объект типа A. У меня есть код, который извлекает документ типа A, добавляет элемент в массив, который является свойством документа (a.arr.add(new Thing()
), а затем сохраняет документ назад to mongodb. Этот код параллелен, несколько потоков в моих приложениях могут выполнять тезисы операций, и пока нет способа предотвратить потоки от параллельного выполнения тезисов в одном документе. Это плохо, потому что один из потоков может перезаписать работы другого.
Я использую шаблон репозитория для абстрагирования доступа к коллекции mongodb, поэтому у меня есть только операции CRUD в моем расположении.
Теперь, когда я думаю об этом, возможно, это ограничение шаблона репозитория, а не ограничение mongodb, которое вызывает у меня проблемы. Во всяком случае, как я могу сделать этот код "потокобезопасным"? Я думаю, там хорошо известное решение этой проблемы, но, будучи новым для mongodb и шаблона репозитория, я не сразу его вижу.
Спасибо