sql >> Databasteknik >  >> NoSQL >> MongoDB

hur kan jag automatiskt öka ett fält i mongodb med java-kod?

MongoDB skapar automatiskt ett id för varje objekt som infogas i det. Du behöver inte skapa ditt eget ID.

Om du behöver ett inkrementerande heltals-id stöter du på alla möjliga problem med distribuerad synkronisering - det är faktiskt ganska svårt att hitta rätt för icke-triviala fall.

Att generera ett unikt ID på det enklaste sättet jag kan tänka mig:

  • lägg ett index på id-kolumnen med en unik begränsning.
  • för att infoga en dokumentfråga på indexet för det högsta antalet, lägg till 1, använd det som id.
  • om insättningen misslyckas på grund av dubblettindex, försök igen

Det innebär några rundresor men bör vara robust och med index på plats ganska snabbt.

Om du bara har en plats som skriver dessa kan du lösa in id:t i ett AtomicInteger lokalt och bara göra hela processen tur och retur om du upptäcker en kollision och uppdatera sedan AtomicInteger.




  1. Mongodb sorterar med skiftlägesokänsligt sätt

  2. hur kan man lagra en Json i redis med hashmap(HSET)

  3. Hur beräknar jag ett vägt medelvärde i mongoDB med aggregeringsramverk?

  4. Så här ansluter du till dina MongoDB-distributioner med hjälp av Robo 3T GUI