MongoDB按日期范围查找文档-JavaScript
我想通过日期范围查找特定文档beginDate应大于或等于-closeDate应小于或等于当前日期。 该文档如下所示:MongoDB按日期范围查找文档-JavaScript,javascript,mongodb,date,Javascript,Mongodb,Date,我想通过日期范围查找特定文档beginDate应大于或等于-closeDate应小于或等于当前日期。 该文档如下所示: { "beginDate" : ISODate("2014-11-03T23:00:00Z"), "closeDate" : ISODate("2014-11-10T23:00:00Z"), "desc" : "Test", "status" : "ok", "playerId" : "ZLkQzaY7DDvwL8sRj", "_id" : "koz
{ "beginDate" : ISODate("2014-11-03T23:00:00Z"),
"closeDate" : ISODate("2014-11-10T23:00:00Z"),
"desc" : "Test",
"status" : "ok",
"playerId" : "ZLkQzaY7DDvwL8sRj",
"_id" : "kozi9eHcLYa2LbWDG" }
var doc = TestData.findOne({
playerId: player._id,
beginDate: { $gte: new Date(new Date().toISOString()) },
closeDate: { $lte: new Date(new Date().toISOString()) }
});
我的查询如下所示:
{ "beginDate" : ISODate("2014-11-03T23:00:00Z"),
"closeDate" : ISODate("2014-11-10T23:00:00Z"),
"desc" : "Test",
"status" : "ok",
"playerId" : "ZLkQzaY7DDvwL8sRj",
"_id" : "kozi9eHcLYa2LbWDG" }
var doc = TestData.findOne({
playerId: player._id,
beginDate: { $gte: new Date(new Date().toISOString()) },
closeDate: { $lte: new Date(new Date().toISOString()) }
});
不幸的是,这不起作用。我怎样才能解决它?
如果有任何帮助,我们将不胜感激。您在比较中的逻辑是颠倒的,因此您需要交换$lte和$gte的使用。您希望查找beginDate的值小于或等于当前时间,closeDate的值大于或等于当前时间的文档。您也可以使用新日期获取当前时间
var doc = TestData.findOne({
playerId: player._id,
beginDate: { $lte: new Date() },
closeDate: { $gte: new Date() }
});
您尝试筛选的日期对象必须是ISODate实例吗?是的,它作为ISODate实例存储在数据库中,我只想获取今天的文档,这在范围内。我真的不明白为什么这不起作用。如果提供给筛选的值是ISODate对象而不是日期对象,会发生什么情况?您的查询使用的日期间隔几乎是相同的微秒?