Deux raisons :
-
Chaque ObjectId est généré localement sur le client. Les différents clients ne coordonnent pas les valeurs qu'ils génèrent. C'est donc possible qu'il y a deux clients qui génèrent les mêmes nombres aléatoires et généreraient donc exactement les mêmes ObjectIds. Très improbable mais possible, d'où la formulation "probablement unique".
-
Algorithme de génération d'ObjectId spécifie l'utilisation d'un compteur de 3 octets qui est utilisé pour désambiguïser les valeurs générées dans la même seconde. Si vous générez plus de 16 millions d'ObjectIds dans la même seconde, ce compteur débordera et le client que vous utilisez commencera à générer des ObjectIds qu'il a déjà générés il y a un instant.