Разница между полями" id "и" id " в MongoDB

есть ли разница между использованием поля ID или _ID из документа MongoDB?

Я спрашиваю это, потому что я обычно использую "_id", однако я видел этот вид ({id:-1}) в документации: http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Sortbyidtosortbyinsertiontime

редактировать

оказывается, документы ошибались.

4 ответов


Я думаю, что это просто опечатка в документации. The _id поле является первичным ключом для каждого документа. Это называется _id и через id. Попытка использовать id ключ может привести к illegal ObjectId format ошибка.

этот раздел просто указывает, что автоматически сгенерированные объекты начинаются с метки времени, поэтому можно автоматически сортировать документы. Это довольно круто, так как _id автоматически индексируется в каждой коллекции. Видеть http://www.mongodb.org/display/DOCS/Object + IDs для получения дополнительной информации. В частности, в разделе "спецификация BSON ObjectID".

A BSON ObjectID-это 12-байтовое значение, состоящее из 4-байтовой метки времени (секунды с эпохи), 3-байтового идентификатора машины, 2-байтового идентификатора процесса и 3-байтового счетчика. Обратите внимание, что поля timestamp и counter должны быть сохранены big endian в отличие от остальной части BSON.


на _id поле является полем по умолчанию для BSON ObjectId и по умолчанию индексируется.

_id и id не то же самое. Вы также можете добавить поле под названием id Если вы хотите, но это не будет индекс, Если вы не добавите индекс.

Это просто опечатка в документах.


id-псевдоним для _id в mongoid.id вернет _id документа. https://github.com/mongodb/mongoid/blob/master/lib/mongoid/fields.rb#L47

Если поле _id не указано, ObjectedId генерируется автоматически.


мои две копейки:

в параметр _id поле

MongoDB назначает _id поле для каждого документа и присваивает ему первичный индекс. Существуют также способы применения вторичных индексов. По умолчанию MongoDB создает ценности для