Y a-t-il une différence entre l’utilisation du champ ID ou _ID d’un document MongoDB?
Je demande ceci, parce que j’utilise habituellement “_id”, cependant j’ai vu cette sorte ({id: -1}) dans la documentation: http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs# OptimisationObjectID-Sortbyidtosortbyinsertiontime
MODIFIER
Il s’avère que les docs ont eu tort.
Je pense que c’est juste une faute de frappe dans la documentation. Le champ _id
est la clé primaire de chaque document. Il s’appelle _id
et est également accessible via id
. Toute tentative d’utilisation d’une clé d’ id
peut entraîner une erreur de illegal ObjectId format
.
Cette section indique simplement que les ObjectID générés automatiquement commencent par un horodatage, ce qui permet de sortinger automatiquement vos documents. C’est plutôt cool puisque le _id
est automatiquement indexé dans chaque collection. Voir http://www.mongodb.org/display/DOCS/Object+IDs pour plus d’informations. Spécifiquement sous “Spécification ObjectID BSON”.
Un ObjectID BSON est une valeur de 12 octets consistant en un horodatage de 4 octets (secondes depuis l’époque), un identifiant de machine de 3 octets, un identifiant de processus de 2 octets et un compteur de 3 octets. Notez que les champs timestamp et counter doivent être stockés big endian contrairement au rest de BSON.
Le champ _id est le champ par défaut des objects ObjectId de Bson et est, par défaut, indexé.
_id
et id ne sont pas les mêmes. Vous pouvez également choisir d’append un champ appelé id
si vous le souhaitez, mais ce ne sera pas un index à moins d’append un index.
C’est juste une faute de frappe dans les docs.
id est un alias pour _id dans mongoid.id renverrait le _id du document. https://github.com/mongodb/mongoid/blob/master/lib/mongoid/fields.rb#L47
Si le champ _id n’est pas spécifié, un ObjectedId est généré automatiquement.
Mes deux centimes:
MongoDB
atsortingbue un champ _id
à chaque document et lui atsortingbue un index principal. Nous pouvons également appliquer des indices secondaires. Par défaut, MongoDB
crée des valeurs pour le champ ObjectID
de type ObjectID
. Cette valeur est définie dans les spécifications BSON
et structurée de la manière suivante:
ObjectID (chaîne HEX de 12 octets) = Date (4 octets, valeur d’horodatage représentant le nombre de secondes écastings depuis l’époque Unix) + adresse MAC (3 octets) + PID (2 octets) + compteur (3 octets)