É único para todos os propósitos práticos. A não-singularidade mencionada é bastante teórica.
O ObjectId é construído fora de
- um carimbo de data/hora (segundos desde a época)
- um identificador de máquina
- o código do processo
- e um contador de 3 bytes começando com um valor aleatório a cada segundo
Portanto, na mediana, a menos que você escreva mais de 3080 documentos por segundo por cliente, você deve ser salvo. Observe que
_id
tem uma restrição única:Even if você tentasse escrever o mesmo ObjectId duas vezes, haveria uma exceção. Nota lateral:mesmo algoritmos de hash como MD5 ou (em menor grau) SHA256 têm uma pequena chance de colisão. Mas com uma restrição única, você está seguro.
Editar :Como uma exceção é lançada no caso muito, Muito, MUITO raro de dois ObjectIds idênticos serem gerados e tentados serem escritos simultaneamente, você simplesmente os trata gerando um novo ObjectId e tenta salvar o documento novamente.