sql >> Database >  >> NoSQL >> MongoDB

hoe kan ik automatisch een veld in mongodb verhogen met behulp van java-code?

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.




  1. Hoe de verzameling uit de database in MongoDB te verwijderen met behulp van het Mongo DB JAVA-stuurprogramma?

  2. hoe de maximale waarde van een veld in MongoDB te krijgen?

  3. MongooseError - Bewerking `users.findOne()` buffering time-out na 10000ms

  4. mongodb-service start niet op