Mongodb 简明教程

MongoDB - ObjectId

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

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

  1. 前面 4 字节表示自 Unix 纪元以来的秒数

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

  3. 接下来的 2 个字节包含 process id

  4. 最后 3 个字节是一个随机计数器值

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

Creating New ObjectId

若要生成一个新的 ObjectId,请使用以下代码: −

>newObjectId = ObjectId()

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

ObjectId("5349b4ddd2781d08c09890f3")

除了让 MongoDB 生成 ObjectId 外,您还可以提供一个 12 字节的 id: −

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

Creating Timestamp of a Document

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

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

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

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

Converting ObjectId to String

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

>newObjectId.str

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

5349b4ddd2781d08c09890f3