MongoDB中“id”和“_id”字段的区别
从MongoDB文档中使用字段ID或_ID有什么区别?
我这样问,因为我通常使用“_id”,但是我在文档中看到了这种sorting({id:-1}): http : //www.mongodb.org/display/DOCS/Optimizing+Object+IDs# OptimizingObjectIDs-Sortbyidtosortbyinsertiontime
编辑
原来的文件是错的。
我希望这只是文档中的一个错字。 _id
字段是每个文档的主键。 它被称为_id
,也可以通过id
访问。 试图使用一个id
键可能会导致一个illegal ObjectId format
错误。
该部分只是表示自动生成的ObjectID以时间戳开始,因此可以自动对文档进行sorting。 这是非常酷的,因为_id
在每个集合中被自动索引。 有关更多信息,请参阅http://www.mongodb.org/display/DOCS/Object+IDs 。 具体在“BSON ObjectID规范”下。
BSON ObjectID是一个12字节的值,由一个4字节的时间戳(历元以来的秒数),一个3字节的机器ID,一个2字节的进程ID和一个3字节的计数器组成。 请注意,时间戳和计数器字段必须与BSON的其余部分不同,存储为大端。
_id
字段是Bson ObjectId的默认字段,默认情况下,它是索引的。
_id
和id是不一样的。 如果需要,也可以select添加一个名为id
的字段,但除非添加索引,否则不会是索引。
这只是文档中的一个错字。
id是mongoid.id中_id的别名,将返回文档的_id。 https://github.com/mongodb/mongoid/blob/master/lib/mongoid/fields.rb#L47
如果未指定_id字段,则会自动生成ObjectedId。
我的两分钱:
_id字段
MongoDB
为每个文档分配一个_id
字段,并为其分配主索引。 我们也可以运用二级指标。 默认情况下, MongoDB
为ObjectID
types的_id
字段创build值。 这个值是在BSON
规范中定义的,它的结构如下:
ObjectID(12个字节的HEXstring)=date(4个字节,表示Unix时代以来秒数的时间戳值)+ MAC地址(3个字节)+ PID(2个字节)+计数器(3个字节)