MongoDB ObjectId

  • ObjectId

    在之前的所有章节中,我们一直在使用MongoDB对象ID。在本章中,我们将了解ObjectId的结构。一个的ObjectId是具有以下结构的12字节的BSON型-
    • 前4个字节代表自unix时代以来的秒数
    • 接下来的3个字节是机器标识符
    • 接下来的2个字节由进程ID组成
    • 最后3个字节是随机计数器值
    MongoDB使用ObjectIds作为每个文档的_id字段的默认值,该默认值是在创建任何文档时生成的。ObjectId的复杂组合使所有_id字段唯一。
  • 创建新的ObjectId

    要生成新的ObjectId,请使用以下代码-
    
    >newObjectId = ObjectId()
    
    上面的语句返回以下唯一生成的id-
    
    ObjectId("5f4f11cd1c2299c06d22b72b")
    
    除了提供MongoDB生成ObjectId之外,您还可以提供12字节的ID-
    
    >myObjectId = ObjectId("5349b4ddd2781d08c09890f4")
    
  • 创建文档的时间戳

    由于_id ObjectId默认情况下存储4字节的时间戳,因此在大多数情况下,您不需要存储任何文档的创建时间。您可以使用getTimestamp方法获取文档的创建时间
    
    >ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()
    
    这将以ISO日期格式返回此文档的创建时间-
    
    ISODate("2020-09-02T03:32:30Z")
    
  • 将ObjectId转换为String

    在某些情况下,您可能需要字符串格式的ObjectId值。要将ObjectId转换为字符串,请使用以下代码-
    
    >newObjectId.str
    
    上面的代码将返回Guid的字符串格式-
    
    5f4f129c1c2299c06d22b72d