MongoDB - ObjectId

我们在前面的所有章节中都使用过MongoDB Object Id.在本章中,我们将了解ObjectId的结构.

ObjectId 是一个12字节的BSON类型,具有以下结构 :

  • 表示自unix纪元以来秒数的前4个字节

  • 接下来的3个字节是机器标识符

  • 接下来的2个字节包含进程ID

  • 最后3个字节是随机计数器值

MongoDB使用ObjectIds作为每个文档的 _id 字段的默认值,该字段是在创建任何文档时生成的. ObjectId的复杂组合使所有_id字段都是唯一的.

创建新的ObjectId

要生成新的ObjectId,请使用以下代码 :

>newObjectId = ObjectId()

以上语句返回以下内容唯一生成的id :

ObjectId("5349b4ddd2781d08c09890f3")

而不是MongoDB生成ObjectId,你也可以提供一个12字节的id :

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

创建文档的时间戳

由于_id ObjectId默认存储4字节时间戳,因此在大多数情况下你不需要存储任何文档的创建时间.您可以使用getTimestamp方法获取文档的创建时间 :

>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()

这将以ISO日期格式返回此文档的创建时间 :

ISODate("2014-04-12T21:49:17Z")

将ObjectId转换为字符串

例如,您可能需要字符串格式的ObjectId值.要在字符串中转换ObjectId,请使用以下代码 :

> newObjectId.str

上面的代码将返回Guid的字符串格式;

5349b4ddd2781d08c09890f3