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字段,并为其分配主索引。 我们也可以运用二级指标。 默认情况下, MongoDBObjectIDtypes的_id字段创build值。 这个值是在BSON规范中定义的,它的结构如下:

ObjectID(12个字节的HEXstring)=date(4个字节,表示Unix时代以来秒数的时间戳值)+ MAC地址(3个字节)+ PID(2个字节)+计数器(3个字节)