Je jedinečný pro všechny praktické účely. Zmíněná nejedinečnost je spíše teoretická.
- časové razítko (sekundy od epochy)
- identifikátor stroje
- ID procesu
- a 3bajtový čítač začínající náhodnou hodnotou každou sekundu
Takže v mediánu, pokud nenapíšete více než 3080 dokumentů za sekundu na klienta, měli byste být ušetřeni. Je třeba poznamenat, že _id
má jedinečné omezení:I když pokud byste zkusili napsat stejné ObjectId dvakrát, byla by výjimka.
Vedlejší poznámka:dokonce i hashovací algoritmy jako MD5 nebo (v menší míře) SHA256 mají malou šanci na kolize. Ale s jedinečným omezením jste v bezpečí.
Upravit :Vzhledem k tomu, že výjimka je vyvolána ve velmi, velmi, velmi vzácném případě, že jsou vygenerována dvě identická ObjectId a pokusí se je zapsat současně, jednoduše je zpracujete vygenerováním nového ObjectId a pokusíte se dokument uložit znovu.