Той е уникален за всички практически цели. Споменатата неуникалност е по-скоро теоретична.
ObjectId е конструиран извън
- клеймо за време (секунди от епохата)
- идентификатор на машината
- ID на процеса
- и 3-байтов брояч, започващ с произволна стойност всяка секунда
Така че, средно, освен ако не пишете повече от 3080 документа в секунда на клиент, трябва да сте спестени. Трябва да се отбележи, че _id
има уникално ограничение:дори ако бихте се опитали да напишете един и същ ObjectId два пъти, ще има изключение.
Странична бележка:дори хеш алгоритми като MD5 или (в по-малка степен) SHA256 имат малък шанс за сблъсък. Но с уникално ограничение вие сте в безопасност.
Редактиране :Тъй като се хвърля изключение в много, много, МНОГО редкия случай, когато два идентични ObjectId се генерират и се опитват да бъдат записани едновременно, вие просто се справяте с тях, като генерирате нов ObjectId и се опитвате да запазите документа отново.