开发学院

您的位置:首页>教程>正文

教程正文

MongoDB ObjectId

MongoDB ObjectId

  在前面的所有章节中,我们一直在使用MongoDB的ObjectId。在本章中,我们将了解ObjectId的结构。

  ObjectId是具有以下结构的12字节BSON类型的对象:

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

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

  •   接下来的2个字节由进程id组成

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

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

创建新的ObjectId

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

>newObjectId = ObjectId()

  上述语句返回了以下唯一生成的id:

ObjectId("5349b4ddd2781d08c09890f3")

  除了MongoDB生成ObjectId之外,您还可以提供12字节的id 

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

创建文档的时间戳

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

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

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

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

将对象转换为字符串

  在某些情况下,可能需要字符串格式的ObjectId值。要转换字符串中的ObjectId,请使用以下代码-

>newObjectId.str

  上述代码将返回Guid的字符串格式:

5349b4ddd2781d08c09890f3