Mongodb 比较两个mongo ObjectId以检查这两个对象中的哪一个是后来创建的

Mongodb 比较两个mongo ObjectId以检查这两个对象中的哪一个是后来创建的,mongodb,mongodb-query,mongoid,objectid,Mongodb,Mongodb Query,Mongoid,Objectid,我知道mongo ObjectId有时间戳和随机增量。因此,比较两个objectid应该是可能的,以找出这两个object中的哪一个是较早创建的还是较晚创建的 我怎么能不从头开始写所有的东西?< /P> < P>让我们考虑一个集合 T1 < /Cord>两个文档: { "_id" : ObjectId("5e1705d9bc058dac23306dd0") }, { "_id" : ObjectId("5e1705ddbc058dac23306dd2") } 使用find方法进行的比较查询和使

我知道mongo ObjectId有时间戳和随机增量。因此,比较两个objectid应该是可能的,以找出这两个object中的哪一个是较早创建的还是较晚创建的


我怎么能不从头开始写所有的东西?< /P> < P>让我们考虑一个集合<代码> T1 < /Cord>两个文档:

{ "_id" : ObjectId("5e1705d9bc058dac23306dd0") },
{ "_id" : ObjectId("5e1705ddbc058dac23306dd2") }
使用
find
方法进行的比较查询和使用
ObjectId
进行比较的聚合查询:

var INPUT_OBJ = ObjectId("5e1705dcbc058dac23306dd1")

db.t1.aggregate( [
  { $match: { $expr: { $gt: [ { $toDate: "$_id" },  { $toDate: INPUT_OBJ } ] } } }
] )

db.t1.find( { $expr: { $gt: [ { $toDate: "$_id" },  { $toDate: INPUT_OBJ } ] } } )
两个查询都返回文档:
{“\u id”:ObjectId(“5e1705ddbc058dac23306dd2”)}

为了验证,可以使用
getTimestamp()
方法从
ObjectId
获取日期/时间。例如,
ObjectId(“5e1705d9bc058dac23306dd0”).getTimestamp()
返回
ISODate(“2020-01-09T10:52:09Z”)

聚合操作符可以将
ObjectId
转换为
日期类型。可以比较生成的日期值。