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.