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")

创建文档的时间戳

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

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

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

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

将 ObjectId 转换为字符串

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

>newObjectId.str

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

5349b4ddd2781d08c09890f3
广告