Е, използвайки връзката, която споменахте , предпочитам да използвам подход за събиране на броячи .
Подходът за събиране на броячи има някои недостатъци, включително:
- Винаги генерира множествена заявка (две):една за получаване на последователния номер, друга за извършване на вмъкването, използвайки идентификатора, който сте получили чрез последователността,
- Ако използвате функции за шардинг на mongodb, документ, отговорен за съхраняването на състояние на брояч, може да се използва често и всеки път ще достига до един и същ сървър.
Въпреки това трябва да е подходящо за повечето употреби.
Подходът, който споменахте ("оптимистичният цикъл“ ) не трябва да нарушава IMO и не предполагам защо имате проблем с него. Въпреки това не бих го препоръчал. Какво се случва, ако изпълните кода на множество mongo клиенти, ако един има много забавяне, а други продължават да приемат идентификатори? Не бих искал да се сблъскам с такъв проблем... Освен това има поне две заявки за успешна операция, но няма максимален брой повторни опити преди успех...