sql >> Database teknologi >  >> NoSQL >> MongoDB

hvordan kan jeg automatisk øge et felt i mongodb ved hjælp af java-kode?

MongoDB opretter automatisk et id for hvert objekt, der er indsat i det. Du behøver ikke oprette dit eget id.

Hvis du har brug for et stigende heltals-id, støder du ind i alle mulige problemer med distribueret synkronisering - det er faktisk ret svært at finde det rigtige for ikke-trivielle tilfælde.

For at generere et unikt id på den enkleste måde, jeg kan komme i tanke om:

  • sæt et indeks på id-kolonnen med en unik begrænsning.
  • for at indsætte en dokumentforespørgsel på indekset for det højeste tal, tilføje 1, brug det som id.
  • hvis indsættelse mislykkes på grund af duplikatindeks, prøv igen

Det involverer et par rundrejser, men bør være robust og med indekset på plads ret hurtigt.

Hvis du kun har én lokation, der skriver disse, kan du indløse id'et i et AtomicInteger lokalt og kun udføre hele rundtursprocessen, hvis du opdager en kollision, og derefter opdatere AtomicInteger.




  1. Hvordan sætter man en billedfil i et json-objekt?

  2. Hvis mongodb aggregate ikke bruger indekser til $lookup, hvorfor øges min ydeevne, når jeg bruger indekser?

  3. Med sikkerhedskopieringskryptering til MySQL, MongoDB og PostgreSQL - ClusterControl 1.5.1

  4. Android/MongoDB:NoClassDefFoundError:com.mongodb.DBPortPool