Den er unik til alle praktiske formål. Den nævnte ikke-entydighed er ret teoretisk.
ObjectId er konstrueret ud af
- et tidsstempel (sekunder siden epoke)
- en maskin-id
- proces-id'et
- og en tæller på 3 byte, der starter med en tilfældig værdi hvert sekund
Så ved medianen, medmindre du skriver mere end 3080 dokumenter i sekundet pr. klient, bør du være gemt. Det er at bemærke, at _id
har en unik begrænsning:Selv hvis du ville prøve at skrive det samme ObjectId to gange, der ville være en undtagelse.
Sidebemærkning:selv hash-algoritmer som MD5 eller (i mindre grad) SHA256 har en lille chance for kollision. Men med en unik begrænsning er du sikker.
Rediger :Da en undtagelse er smidt i det meget, Meget, MEGET sjældne tilfælde, at to identiske ObjectId'er genereres og forsøges skrevet samtidigt, håndterer du dem simpelthen ved at generere et nyt ObjectId og forsøger at gemme dokumentet igen.