【发布时间】:2017-06-26 20:25:00
【问题描述】:
是否可以对Date 与ObjectId 执行比较查询$gt、$lt 等,反之亦然? mongodb驱动程序会自动转换吗?这个 mongodb 服务器会自动转换吗?
【问题讨论】:
-
你能在问题编辑中举个例子吗?
标签: javascript node.js mongodb mongodb-query
是否可以对Date 与ObjectId 执行比较查询$gt、$lt 等,反之亦然? mongodb驱动程序会自动转换吗?这个 mongodb 服务器会自动转换吗?
【问题讨论】:
标签: javascript node.js mongodb mongodb-query
是和不是。
在基于 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 的“创建”,它们要么在“驱动程序”中完成,要么由用户明确完成,或者如果仍然省略,服务器将生成一个。
【讨论】:
Date 对象与ObjectId 对象进行比较,反之亦然?
$where?