在MongoDB中,ObjectId 是一种特殊的数据类型,用于作为文档的默认主键。每个文档都有一个名为 _id 的字段,它包含一个 ObjectId。这个字段是由 MongoDB 自动生成的,确保每个文档在集合中具有唯一的标识。

ObjectId 的结构如下:

  •  12字节长度: ObjectId 是一个长度为12字节的16进制字符串。

  •  时间戳: 前4个字节表示创建 ObjectId 的时间戳,是一个从1970年1月1日至今的秒数。

  •  机器标识: 接下来的3个字节是机器标识符,通常是机器的MAC地址的散列值。

  •  进程标识: 紧随其后的两个字节是进程标识符,通常是进程ID。

  •  计数器: 最后的三个字节是一个计数器,初始值是一个随机数,确保同一秒内生成的 ObjectId 具有唯一性。


ObjectId 的唯一性主要由时间戳、机器标识、进程标识和计数器的组合保证。

以下是一个示例 ObjectId 的字符串表示: