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

时间:2014-04-11 04:35:18

标签: javascript node.js mongodb mongodb-query

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

1 个答案:

答案 0 :(得分:1)

是和否。

在基于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他们要么在"司机"或者由用户明确表示,或者如果仍然省略,服务器将生成一个。