📌  相关文章
📜  mongodb objectid 时间戳 (1)

📅  最后修改于: 2023-12-03 15:17:41.687000             🧑  作者: Mango

MongoDB ObjectId 时间戳

简介

在MongoDB中,每个文档都有一个默认的_id字段,用于唯一标识该文档。这个_id字段的值是一个ObjectID对象,由12个字节组成,其中4个字节是当前时间的时间戳,3个字节是机器的标识符,2个字节是进程ID,3个字节是随机数。一个24位的十六进制字符串可以表示一个ObjectID对象。

时间戳

ObjectID中的4个字节是当前时间的时间戳,精确到秒级别。这个时间戳是从格林威治时间1970年1月1日00:00:00以来经过的秒数。因此,通过ObjectID对象可以获取该文档的创建时间。

const objectId = ObjectId('5f0dad8f37defb03016df12c');
const timestamp = objectId.getTimestamp();
console.log(timestamp); //2020-07-15T08:45:51.000Z
使用

在MongoDB中,我们可以使用ObjectID来查询文档,例如:

  const collection = db.collection('users');
  const result = await collection.findOne({ _id: new ObjectId('5f0dad8f37defb03016df12c') });
  console.log(result); //查询到的文档对象
注意事项

在使用ObjectID时,需要注意以下几点:

  • ObjectID是一个12字节的BSON类型,长度为24个字符的十六进制字符串,其中包含的时间戳可以帮助优化查询速度。
  • 不同机器生成的ObjectID可能不同,因为机器标识符和进程ID不同。
  • ObjectID不能保证全局唯一性,但在某个集合中基本上是唯一的。
结论

ObjectID包含一个时间戳,用于记录文档的创建时间。在MongoDB中,可以通过ObjectID进行精准的文档查询。了解了ObjectID的含义和使用方法,我们可以更好地利用MongoDB的功能。