MongoDB автоматично създава идентификатор за всеки обект, вмъкнат в него. Не е необходимо да създавате свой собствен идентификатор.
Ако се нуждаете от нарастващ идентификационен номер на цяло число, тогава ще се сблъскате с всякакви проблеми с разпределената синхронизация - всъщност е доста трудно да се получи правилно за нетривиални случаи.
За генериране на уникален идентификатор най-простият начин, за който се сещам:
- поставете индекс на колоната с уникално ограничение.
- за да вмъкнете заявка за документ в индекса за най-високото число, добавете 1, използвайте го като идентификатор.
- ако вмъкването е неуспешно поради дублиран индекс, опитайте отново
Включва няколко обиколки, но трябва да е стабилен и с индекс на място доста бързо.
Ако имате само едно местоположение, което ги записва, можете да осребрите идентификатора в AtomicInteger локално и да извършите пълния процес на двупосочно пътуване само ако откриете сблъсък, след което актуализирайте AtomicInteger.