Is there any difference between using the field ID or _ID from a MongoDB document?
I am asking this, because I usually use "_id", however I saw this sort({id:-1}) in the documentation: http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Sortbyidtosortbyinsertiontime
EDIT
Turns out the docs were wrong.
The
_id
field is the default field for Bson ObjectId's and it is,by default, indexed._id
and id are not the same. You may also choose to add a field calledid
if you want, but it will not be index unless you add an index.It is just a typo in the docs.
I expect it's just a typo in the documentation. The
_id
field is primary key for every document. It's called_id
and is also accessible viaid
. Attempting to use anid
key may result in aillegal ObjectId format
error.That section is just indicating that the automatically generated ObjectIDs start with a timestamp so it's possible to sort your documents automatically. This is pretty cool since the
_id
is automatically indexed in every collection. See http://www.mongodb.org/display/DOCS/Object+IDs for more information. Specifically under "BSON ObjectID Specification".id is an alias for _id in mongoid.id would return the _id of the document. https://github.com/mongodb/mongoid/blob/master/lib/mongoid/fields.rb#L47
if the _id field is not specified an ObjectedId is generated automatically.
My two cents:
The _id field
MongoDB
assigns an_id
field to each document and assigns primary index on it. There're ways by which we can apply secondary indices as well. By default,MongoDB
creates values for the_id
field of typeObjectID
. This value is defined inBSON
spec and it's structured this way: