Es único para todos los propósitos prácticos. La no unicidad mencionada es bastante teórica.
Se construye el ObjectId fuera de
- una marca de tiempo (segundos desde la época)
- un identificador de máquina
- la identificación del proceso
- y un contador de 3 bytes que comienza con un valor aleatorio cada segundo
Por lo tanto, en la mediana, a menos que escriba más de 3080 documentos por segundo por cliente, debe ahorrar. Debe tener en cuenta que _id
tiene una restricción única:Incluso si intentaría escribir el mismo ObjectId dos veces, habría una excepción.
Nota al margen:incluso los algoritmos hash como MD5 o (en menor medida) SHA256 tienen una pequeña posibilidad de colisión. Pero con una restricción única, estás a salvo.
Editar :Dado que se produce una excepción en el muy, muy, MUY raro caso de que se generen dos ObjectId idénticos y se intente escribirlos al mismo tiempo, simplemente manéjelos generando un nuevo ObjectId e intente guardar el documento nuevamente.