我正在尝试使用bash脚本和JavaScript从MongoDB获取前一天的文档。
我使用JS将查询传递给MongoDB,但是当我得到日期时会出现问题,因为它是这样的:
2015-7-3 6:2:00
但在我的db记录中是这样的:
2015-07-03 06:02:00
var d = new Date();
db.mycoll.find({ "requestedDateTime" : { $gte :d.getFullYear()+'-'+(d.getUTCMonth() + 1)+'-'+(d.getDate() - 1)+' 06:00:00' }});
以上查询是我现在运行的方式,这也需要每天在cronjob中运行。 如果有任何方法可以不使用JS,我也很乐意学习它。
答案 0 :(得分:1)
只需使用日期数学
var today = new Date(),
yesterday = new Date( today.valueOf() - ( 1000 * 60 * 60 * 24 );
或四舍五入到UTC的开头:
var date = new Date(),
today = new Date( date.valueOf() - ( date.valueOf() % ( 1000 * 60 * 60 * 24 ) ) ),
yesterday = new Date( today.valueOf() - ( 1000 * 60 * 60 * 24 ) );
然后传入查询:
db.mycoll.find({ "requestedDate": { "$gte": yesterday, "$lt": today } });
因此,从执行时间开始24小时,或者在前一天24小时。根据您的需要选择。