ObjectId()
说明
ObjectId(<value>)
重要
mongosh 方法
本页面提供
mongosh
方法的相关信息。这不是特定于语言的驱动程序(例如 Node.js)的文档。如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
返回新的ObjectId。12 字节的 ObjectId 由以下部分组成:
一个 4 字节时间戳,它表示 ObjectId 的创建时间,并以自 UNIX 纪元以来的秒数为单位进行测量。
每个进程会生成一次 5 字节随机值。这个随机值对于机器和进程是唯一的。
三字节递增计数器(初始化为随机值)。
对于时间戳和计数器值,最高有效字节在字节序列中最先出现(大端字节序)。对于其他 BSON 值,最低有效字节最先出现(小端字节序)。
如果使用整数值创建对象标识符(ObjectId),则该整数将替换时间戳。
兼容性
可以使用 ObjectId()
查找托管在以下环境中的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
ObjectId()
可以接受以下输入值之一:
输入类型 | 说明 |
---|---|
hexadecimal | 可选。新对象标识符的 24 个字符十六进制字符串值。 |
integer | 可选。将整数值(以秒为单位)添加到 Unix 纪元中,以创建新的时间戳。 |
方法
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。
使用 作为参数设置新的 ObjectId<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\"timestamp
\"> <path fill=\" \" d=\" \">
您可以使用 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")