比较查询运算符ObjectId<->日期

Comparison query operator ObjectId <-> Date

本文关键字:gt 日期 lt- 比较 运算符 ObjectId 查询      更新时间:2023-09-26

是否可以执行DateObjectId的比较查询$gt$lt等,反之亦然?mongodb驱动程序会自动转换吗?这个mongodb服务器会自动转换吗?

是和否

在基于JavaScript的方法下,可以从ObjectId值中获取日期,以便进行比较。也应该可以构造一个给定特定日期值的ObjectId,但看不到它的实用性。但所有这些都是有效的,基本上截止日期:

ObjectId("53473d87cb495e216c982929") > ObjectId("53473e57cb495e216c98292a")
ObjectId("53473d87cb495e216c982929").getTimestamp() >
ObjectId("53473e57cb495e216c98292a").getTimestamp()
ObjectId("53473d87cb495e216c982929").getTimestamp() >
ISODate("2014-04-11T00:55:35Z")    

所以像这样的形式会起作用,即使真的不是那么好的声明:

db.collection.find({ 
    "$where": function() {
         return this._id.getTimestamp() > new Date("2014-01-01");
    }
}

至于_id的"创建",它们要么在"驱动程序"中完成,要么由用户显式完成,或者如果仍然省略,服务器将生成一个。