Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

ObjectId()

在此页面上

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

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是特定于语言的驱动程序(例如 Node.js)的文档。

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

返回新的ObjectId。12 字节的 ObjectId 由以下部分组成:

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

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

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

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

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

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

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

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

ObjectId() 有以下方法:

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

从 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

在内部,Date 对象存储为带符号 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")

提示

另请参阅:

后退

HexData