一尘不染

Mongodb今天按日期查找创建的结果

node.js

我有此查询以获取月结果。但是我想得到今天的结果。

var start = new Date(2010, 11, 1);
var end = new Date(2010, 11, 30);

db.posts.find({created_on: {$gte: start, $lt: end}});

做这个的最好方式是什么?


阅读 213

收藏
2020-07-07

共1个答案

一尘不染

您的开始日期对象应将当前日期时间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()
and
endOf()
方法,并将字符串'day'作为参数传递来实现:

var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today
2020-07-07