在前面学习的所有章节中,都有使用了MongoDB对象标识符。 在本章中,我们将了解ObjectId的结构。
ObjectId 是具有以下结构的12字节BSON类型 -
- 前
4
个字节表示从unix纪元开始的秒数 - 接下来的
3
个字节是机器标识符 - 接下来的
2
个字节由进程ID组成 - 最后
3
个字节是随机计数器值
MongoDB使用ObjectIds
作为每个文档的_id
字段的默认值,这是在创建任何文档时生成的。 ObjectId
的复杂组合使得所有_id
字段都是唯一的。
>newObjectId = ObjectId()
上述语句返回以下唯一生成的id -
ObjectId("595b99d9f6a6243715b3c312")
还可以提供一个12
字节的 id
来可代替 MongoDB 生成 ObjectId -
>myObjectId = ObjectId("595b99d9f6a6243715b3c312")
创建文档的时间戳
由于_id
ObjectId默认存储4
字节的时间戳,在大多数情况下,不需要存储任何文档的创建时间。可以使用getTimestamp
方法获取文档的创建时间 -
>ObjectId("595b99d9f6a6243715b3c312").getTimestamp()
这将以ISO日期格式返回此文档的创建时间 -
> ObjectId("595b99d9f6a6243715b3c312").getTimestamp()
ISODate("2017-07-04T13:36:25Z")
将ObjectId转换为String
在某些情况下,可能需要使用字符串格式的ObjectId
值。 要转换ObjectId
为字符串,请使用以下代码 -
>newObjectId.str
上面的代码将返回Guid的字符串格式 -
595b99d9f6a6243715b3c312