对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

ObjectId()(mongosh方法)

ObjectId(<value>)

重要

mongosh 方法

This page documents a mongosh method. This is not the documentation for a language-specific driver, such as Node.js.

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

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

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

  • 5 字节的随机值,每个客户端进程生成一次。这个随机值对于机器和进程是唯一的。如果进程重新启动或进程的主节点发生变化,此值会被重新生成。

  • 每个客户端进程的 3字节递增计数器,初始化为随机值。当进程重新启动时,计数器会重置。

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

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

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

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

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

输入类型
说明

hexadecimal

可选。新对象标识符的 24 个字符十六进制字符串值。

integer

可选。整数值(以秒为单位)被添加到 Unix 纪元 以创建新的时间戳。

ObjectId() 有以下方法:

方法
说明

以日期形式返回对象的时间戳部分。

以十六进制字符串形式返回对象标识符。

从MongoDB5.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

The first four bytes of the ObjectId are the number of seconds since the Unix epoch. In this example, the ObjectId timestamp is 00000020 which is 32 in hexadecimal.

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

newObjectId = ObjectId("507f191e810c19729de860ea")
给本页内容打分