Jest wyjątkowy pod każdym względem praktycznym. Wspomniana nieunikalność jest raczej teoretyczna.
ObjectId został skonstruowany z
- znacznik czasu (sekundy od epoki)
- identyfikator maszyny
- identyfikator procesu
- i 3-bajtowy licznik zaczynający się od losowej wartości co sekundę
Tak więc przy medianie, chyba że piszesz więcej niż 3080 dokumentów na sekundę na klienta, powinieneś być zapisany. Należy zauważyć, że _id
ma unikalne ograniczenie:Nawet jeśli próbowałbyś napisać ten sam ObjectId dwa razy, byłby wyjątek.
Uwaga dodatkowa:nawet algorytmy haszujące, takie jak MD5 lub (w mniejszym stopniu) SHA256, mają niewielką szansę na kolizję. Ale dzięki unikalnemu ograniczeniu jesteś bezpieczny.
Edytuj :Ponieważ wyjątek jest rzucany w bardzo, BARDZO rzadkim przypadku, gdy dwa identyczne identyfikatory ObjectId są generowane i próbują być zapisywane jednocześnie, po prostu radzisz sobie z nimi, generując nowy ObjectId i próbujesz ponownie zapisać dokument.