идентификатор. Необходимо реализовать авто инкрементацию данного поля, то есть 1 документ в коллекции - id=0, для второго id=1, для третьего id=2 и так далее. Однако если действовать просто - запрашивать count в коллекции, и это число ставить в качестве id для нового создаваемого документа, то существует риск дублирования id, если запросы выполнятся одновременно. Могу я решить данную проблему с помощью транзакций? Ведь в монге оптимистическая блокировка, а в описанном мною случае write conflict просто не может случиться. И если нет, то какие вообще пути существуют для решения данной проблемы?
первый путь решения - не использовать автоинкременты и донести до бизнеса, что для его задачи оно не требуется второй путь - если по какойто причине (лень, не хочется связываться, хочется гемороя дополнительного, и т.п.) всетаки реально нужен автоинкремент, то заводим коллекцию, в нее документ с счетчиком, дергаем $inc и тащим измененный док третий вариант - на случай если пробелы между автоинкрементным id прям ваще недопустимы, бизнес изза этого попадает на бабки или нелояльность юзеров (подтвержденную, а не со слов менеджеров) - тогда уже берем транзакции, все становится медленно, но зато честный автоинкременты
Обсуждают сегодня