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

come posso incrementare automaticamente un campo in mongodb usando il codice java?

MongoDB crea automaticamente un ID per ogni oggetto inserito al suo interno. Non è necessario creare il proprio ID.

Se hai bisogno di un ID intero incrementale, ti imbatti in tutti i tipi di problemi di sincronizzazione distribuita:in realtà è piuttosto difficile risolvere i casi non banali.

Per generare un ID univoco nel modo più semplice che mi viene in mente:

  • inserisci un indice nella colonna id con un vincolo univoco.
  • per inserire una query del documento nell'indice per il numero più alto, aggiungi 1, usalo come id.
  • se l'inserimento non riesce a causa di un doppio tentativo di indice

Implica alcuni viaggi di andata e ritorno, ma dovrebbe essere robusto e con l'indice in posizione abbastanza veloce.

Se hai solo una posizione che li scrive, puoi incassare l'ID in un AtomicInteger localmente ed eseguire l'intero processo di andata e ritorno solo se rilevi una collisione, quindi aggiorna AtomicInteger.