ObjectId
s sont là pour les situations où vous n'avez pas de clé unique pour chaque document d'une collection. Ils sont uniques, vous n'avez donc pas à vous soucier des conflits et ils se répartissent raisonnablement bien dans les grands déploiements sans trop de soucis (ils ont des avantages et des inconvénients, en savoir plus ici
).
L'ObjectId
contient également l'horodatage du client où l'ObjectId
a été généré (sauf si le serveur de base de données est configuré pour générer toutes les clés). Avec cela, comme vous l'avez remarqué, vous pouvez utiliser l'horodatage pour effectuer certaines opérations de date. Cependant, si vous prévoyez d'utiliser le cadre d'agrégation, vous constaterez que vous ne pouvez pas utiliser un ObjectId
dans toutes les opérations de date actuellement (issue
). Si vous voulez utiliser l'AF, vous aurez besoin d'un deuxième champ qui contient la date, malheureusement en le stockant doublement avec le ObjectId
la valeur interne de .
Si vous pouvez être assuré que le _id
que vous générez est unique, alors il n'y a pas vraiment de raison d'utiliser un ObjectId
dans votre structure de données.