А почему просто указание unique не подходит?
Я использую плагин mongoose-auto-increment. Для поля(field) -- id.
К примеру, у меня в схеме есть уникальное поле telegramId. Так вот, при одновременном запуске 2-х запросов на создание одинаковых документов {telegramId: 1}, один из них выполняется, а второй выдает ошибку, как и должен. Но вот счётчик лагает в плагине (auto-increment) и меняет значение на -1, и id (field) попавшего документа в коллекцию = 2. А ID 1 получается не попал в коллекцию из-за подозрения на дубликат, НО count под него было выделено и изменено на +1, что разрешило из-за гонки условий следующему документу получить ID 2.
Вот такое случилось когда у меня приложение зависло и бот в телеграме не отвечал. Потом я его перезапустил, он начал обрабатывать сообщения все сразу. Я отправил несколько сообщений, а проблема в том, что у меня стоит мидлвер, который проверяет наличие пользователя в базе по ID пользователя. И таким образом по начале обработки сообщений, несколько от одного пользователя сразу начинают параллельно обрабатываться и плагин auto increment'a лагает