说明
ObjectId(<value>)重要
mongosh 方法
This page documents a
mongoshmethod. This is not the documentation for a language-specific driver, such as Node.js.如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
一个 4 字节时间戳,它表示 ObjectId 的创建时间,并以自 UNIX 纪元以来的秒数为单位进行测量。
5 字节的随机值,每个客户端进程生成一次。这个随机值对于机器和进程是唯一的。如果进程重新启动或进程的主节点发生变化,此值会被重新生成。
每个客户端进程的 3字节递增计数器,初始化为随机值。当进程重新启动时,计数器会重置。
对于时间戳和计数器值,最高有效字节在字节序列中最先出现(大端字节序)。对于其他 BSON 值,最低有效字节最先出现(小端字节序)。
如果使用整数值创建对象标识符(ObjectId),则该整数将替换时间戳。
兼容性
可以使用 ObjectId() 查找托管在以下环境中的部署:
- MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
ObjectId() 可以接受以下输入值之一:
输入类型 | 说明 |
|---|---|
| 可选。新对象标识符的 24 个字符十六进制字符串值。 |
| 可选。整数值(以秒为单位)被添加到 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。
使用 timestamp 作为参数设置新的 ObjectId
您可以使用 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")