我有这个查询来获得月份的结果。但我想得到今天的结果。
var start = new Date(2010, 11, 1);
var end = new Date(2010, 11, 30);
db.posts.find({created_on: {$gte: start, $lt: end}});
这样做的最佳方式是什么?
答案 0 :(得分:47)
您的开始日期对象应保持当前日期时间小时为00:00:00.000
(精确度为毫秒),并将今天的日期设置为23:59:59.999
:
var start = new Date();
start.setHours(0,0,0,0);
var end = new Date();
end.setHours(23,59,59,999);
然后像往常一样在MongoDB查询运算符中传递修改后的日期对象:
db.posts.find({created_on: {$gte: start, $lt: end}});
如果您使用的是momentjs库,可以使用当前日期对象上的startOf()
和endOf()
方法完成此操作,并将字符串'day'
作为参数:
var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today