【问题标题】:Can MongoDB's _id fields be compared?可以比较 MongoDB 的 _id 字段吗?
【发布时间】:2021-06-26 20:19:47
【问题描述】:

我一直在阅读有关使用对象创建时间戳创建 id 的 MongoDB。简单地比较这些并找出之前创建的对象是否有效?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您可以将 ObjectID 与 .equals() 进行比较。请参阅documentation

    ObjectId 是一个十六进制字符串,代表一个 12 字节的数字。

    • 一个4字节的时间戳值,代表ObjectId的创建, 自 Unix 纪元以来以秒为单位衡量
    • 一个 5 字节的随机值
    • 一个 3 字节递增计数器,初始化为随机值

    由于时间戳是 ObjectId 中最重要的部分,所以可以。 Selecting the most significant four bytes of the ObjectId as the time stamp.

    另见ObjectId.getTimestamp()documentation

    【讨论】:

    • 这个答案的使用 .equals() 的示例参考了 nodeJS 文档。虽然这个答案是完全准确的,但存在一些语言差异。例如,python 可以使用 == 运算符。
    【解决方案2】:

    通常,可以通过 ObjectId 比较对象的创建:有关更多信息,请参阅此链接。

    --引用此链接:https://steveridout.github.io/

    为什么要从时间戳生成 ObjectId? 按创建日期查询文档。

    例如查找 2013-11-01 之后创建的所有 cmets:

    db.cmets.find({_id: {$gt: ObjectId("5272e0f00000000000000000")}})

    ——另一个有用的解释性链接: uses for mongodb ObjectId creation time

    最好的问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多