Het is uniek voor alle praktische doeleinden. De genoemde niet-uniekheid is nogal theoretisch.
De ObjectId is geconstrueerd uit
- een tijdstempel (seconden sinds tijdperk)
- een machine-ID
- de proces-ID
- en een teller van 3 bytes beginnend met een willekeurige waarde elke seconde
Dus, bij mediaan, zou je veilig moeten zijn, tenzij je meer dan 3080 documenten per seconde per cliënt schrijft. Merk op dat _id
heeft een unieke beperking:zelfs als je zou proberen dezelfde ObjectId twee keer te schrijven, er zou een uitzondering zijn.
Kanttekening:zelfs hash-algoritmen zoals MD5 of (in mindere mate) SHA256 hebben een kleine kans op botsing. Maar met een unieke beperking bent u veilig.
Bewerken :Aangezien er een uitzondering wordt gegenereerd in het zeer, zeer, ZEER zeldzame geval dat twee identieke ObjectIds worden gegenereerd en gelijktijdig proberen te worden geschreven, handelt u ze eenvoudig af door een nieuwe ObjectId te genereren en probeert u het document opnieuw op te slaan.