Docs 菜单

Docs 主页开发应用程序MongoDB Manual

ObjectId()

在此页面上

  • 说明
  • 兼容性
  • 语法
  • 方法
  • 行为
  • 举例
ObjectId(<value>)

重要

mongosh 方法

这是一个 mongosh方法。这不是Node.js或其他特定于编程语言的驱动程序方法的文档。

在大多数情况下, mongosh方法的工作方式与旧版mongo shell 方法相同。但是,某些旧方法在mongosh中不可用。

有关旧版mongo shell 文档,请参阅相应 MongoDB Server 版本的文档:

对于 MongoDB API 驱动程序,请参阅特定语言的MongoDB 驱动程序文档。

返回新的对象标识符。12 字节的对象标识符由以下部分组成:

  • 一个 4 字节时间戳,它表示 ObjectId 的创建时间,并以自 UNIX 纪元以来的秒数为单位进行测量。

  • 每个进程会生成一次 5 字节随机值。这个随机值对于机器和进程是唯一的。

  • 三字节递增计数器(初始化为随机值)。

对于时间戳和计数器值,最高有效字节在字节序列中最先出现(大端字节序)。对于其他 BSON 值,最低有效字节最先出现(小端字节序)。

如果使用整数值创建对象标识符(ObjectId),则该整数将替换时间戳。

可以使用 ObjectId() 查找托管在以下环境中的部署:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

ObjectId() 可以接受以下输入值之一:

输入类型
说明
hexadecimal
可选。新对象标识符的 24 个字符十六进制字符串值。
integer

ObjectId() 有以下方法:

方法
说明
以日期形式返回对象的时间戳部分。
以十六进制字符串形式返回对象标识符。
返回 ObjectId.self

从 MongoDB 5开始。 0 、 mongosh取代了旧版mongo shell。 ObjectId()方法在mongosh中的工作方式与在旧版mongo shell 中的工作方式不同。有关传统方法的更多信息,请参阅传统 mongo Shell。

要生成新的 ObjectId,请使用不带参数的ObjectId()

newObjectId = ObjectId()

在此示例中,newObjectId 的值为:

ObjectId("507f1f77bcf86cd799439011")

要以十六进制字符串形式返回对象标识符(ObjectId),请使用 toString() 方法。

ObjectId("507f191e810c19729de860ea").toString()

该方法返回:

507f191e810c19729de860ea

您可以使用自定义日期来指定 ObjectId。

1

在内部,日期对象存储为有符号64 位整数,表示自 Unix 纪元 以来的毫秒数 。要了解详情,请参阅Date()

myDate = new Date( "2024-01-01" )
2
timestamp = Math.floor( myDate / 1000 )
3

您可以使用ObjectId.getTimestamp()验证日期。

newObjectId = ObjectId(timestamp)
ObjectId("6592008029c8c3e4dc76256c")

如果要调整对象标识符时间戳,请使用整数生成新的对象标识符。

newObjectId = ObjectId(32)

对象标识符的值如下所示:

ObjectId("00000020f51bb4362eee2a4d")

示例对象标识符由以下部分组成:

  • 一个四字节的时间戳, 00000020

  • 五字节随机元素, f51bb4362e

  • 一个三字节计数器, ee2a4d

ObjectId 的前四个字节是自 Unix 纪元 以来的秒数 。在此示例中,ObjectId 时间戳为00000020 ,十六进制为32

如果要使用十六进制字符串来指定 ObjectId,请在调用ObjectId()时传递一个唯一的24字符十六进制值:

newObjectId = ObjectId("507f191e810c19729de860ea")

提示

← Date() 和 Datetime