是否可以针对$gt
执行$lt
的比较查询Date
,ObjectId
等,反之亦然? mongodb驱动程序是否自动投射?这个mongodb服务器会自动投射吗?
答案 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
他们要么在"司机"或者由用户明确表示,或者如果仍然省略,服务器将生成一个。