Existe-t-il une différence entre utiliser l'ID de champ ou l'ID d'un document MongoDB?
Je pose cette question, car j’utilise habituellement "_id", mais j’ai vu ce type ({id: -1}) dans la documentation: http://www.mongodb.org/display/DOCS/Optimizing+ Object + IDs # OptimizingObjectIDs-Sortbyidtosortbyinsertiontime
[~ # ~] éditer [~ # ~]
Il s'avère que les docs avaient tort.
Je suppose que c'est juste une faute de frappe dans la documentation. Le _id
Le champ est la clé primaire de chaque document. C'est appelé _id
et est également accessible via id
. Tenter d’utiliser une clé id
peut entraîner un illegal ObjectId format
Erreur.
Cette section indique simplement que les ObjectID générés automatiquement commencent par un horodatage, ce qui permet de trier automatiquement vos documents. C'est plutôt cool depuis 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 BSON ObjectID".
Un objet ObjectID est une valeur de 12 octets composée d'un horodatage de 4 octets (secondes depuis Epoch), d'un identifiant d'ordinateur à 3 octets, d'un identificateur de processus à 2 octets et d'un compteur de 3 octets. Notez que les champs timestamp et counter doivent être stockés big endian contrairement au reste de BSON.
Le _id
champ est le champ par défaut pour les identificateurs d'objet Bson et il est, par défaut, indexé.
_id
et id ne sont pas identiques. Vous pouvez également choisir d'ajouter un champ appelé id
si vous le souhaitez, mais ce ne sera pas un index sauf si vous ajoutez un index.
C'est juste une faute de frappe dans la documentation.
id est un alias pour id dans mongoid.id renverrait l'identifiant _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
assigne un _id
champ à chaque document et assigne un index primaire sur celui-ci. Il existe également des moyens d'appliquer des indices secondaires. Par défaut, MongoDB
crée des valeurs pour le _id
champ de type ObjectID
. Cette valeur est définie dans BSON
spec et sa structure est la suivante:
ObjectID (chaîne HEX de 12 octets) = Date (4 octets, une valeur d'horodatage représentant le nombre de secondes depuis l'époque Unix) + adresse MAC (3 octets) + PID (2 octets) + Compteur (3 octets)