MongoDB - 对象 ID


我们在前面的所有章节中都使用了 MongoDB 对象 ID。在本章中,我们将了解ObjectId的结构。

ObjectId是 12 字节 BSON 类型,具有以下结构-

  • 前 4 个字节表示自 Unix 纪元以来的秒数
  • 接下来的3个字节是机器标识符
  • 接下来的 2 个字节由进程 ID组成
  • 最后 3 个字节是随机计数器值

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

创建新的对象 ID

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

>newObjectId = ObjectId()

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

ObjectId("5349b4ddd2781d08c09890f3")

您还可以提供 12 字节 id,而不是 MongoDB 生成 ObjectId -

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

创建文档的时间戳

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

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

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

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

将 ObjectId 转换为字符串

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

>newObjectId.str

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

5349b4ddd2781d08c09890f3