Nej, den er slet ikke dårlig og faktisk den indbyggede ObjectId
er ret stor i indekset, så hvis du mener, du har noget bedre, er du mere end velkommen til at ændre standardværdien for _id
felt til hvad som helst.
Men, og dette er et stort men , er der nogle overvejelser, når man beslutter sig for at gå væk fra standardformuleringen ObjectId
, især når du bruger auto-incrementing _ids som vist her:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field
Multi threading er ikke så stort et problem, fordi findAndModify
og det kan atomlåsene faktisk tage sig af, men så rammer du bare dit første problem. findAndModify
er ikke den hurtigste funktion eller den letteste, og der har været betydelige fald i ydeevnen, når du bruger den regelmæssigt.
Du skal også overveje omkostningerne ved at gøre dette selv alligevel, selv uden findAndModify
. For hver indsats skal du bruge en ekstra forespørgsel. Forestil dig at have et unikt id, som du skal forespørge på, om det er unikt, hver gang du vil indsætte. Til sidst vil din indsættelseshastighed falde til en gennemgang, og din låsetid vil bygge op.
Selvfølgelig ObjectId
er rigtig god til at være unik uden at skulle tjekke eller formulere sin egen unikhed ved at røre ved databasen før indsættelse, derfor har den ikke denne overhead.
Hvis du stadig føler, at et heltals _id passer til dit scenarie, så gå efter det, men husk de overhead, der er beskrevet ovenfor.