Différence entre les champs «id» et «_id» dans MongoDB

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:

Le champ _id

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)