MongoDB maakt automatisch een id aan voor elk object dat erin wordt ingevoegd. U hoeft uw eigen id niet aan te maken.
Als je een oplopend geheel getal id nodig hebt, dan kom je allerlei problemen met gedistribueerde synchronisatie tegen - het is eigenlijk best moeilijk om het goed te krijgen voor niet-triviale gevallen.
Om een unieke id te genereren op de eenvoudigste manier die ik kan bedenken:
- zet een index op de id-kolom met een unieke beperking.
- om een documentquery in de index voor het hoogste getal in te voegen, voeg 1 toe, gebruik dat als id.
- als het invoegen mislukt vanwege een dubbele index, probeer het dan opnieuw
Het omvat een paar rondreizen, maar moet robuust zijn en met de index vrij snel op zijn plaats.
Als u slechts één locatie heeft die deze schrijft, kunt u de id lokaal in een AtomicInteger verzilveren en alleen het volledige retourproces uitvoeren als u een botsing detecteert en vervolgens de AtomicInteger bijwerken.