【问题标题】:Mongodb find created results by date todayMongodb 按今天的日期查找创建的结果
【发布时间】:2015-06-02 08:20:40
【问题描述】:

我有这个查询来获得一个月的结果。但我想得到今天的结果。

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

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

最好的方法是什么?

【问题讨论】:

标签: node.js mongodb date meanjs


【解决方案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}});

如果你使用dayjs date utility库,这可以通过在dayjs当前日期对象上使用startOf()endOf()方法来完成,传递字符串'day'作为参数:

const start = dayjs().startOf('day'); // set to 12:00 am today
const end = dayjs().endOf('day'); // set to 23:59 pm today

【讨论】:

    【解决方案2】:

    解决方案

    要查找今天的日期结果或日期之间的数据,请使用以下命令:

    NodeJS:

    // Date format YYYY-MM-DD
    // Suppose you want to look for 1 day data between 2021-12-27 00:00:00 and 2021-12-28 00:00:00
    let start = new Date("2021-12-27");
    let end = new Date("2021-12-28");
    
    // "created_on" can be any field with a date 
    db.posts.find({created_on: {$gte: start, $lt: end}});
    

    这也适用于 Mongo Shell

    db.posts.find({created_on: {$gte: new ISODate("2021-12-27T00:00:00.000Z"), $lt: new ISODate("2021-12-28T00:00:00.000Z")}})
    

    另一种方式:

    // 27th half day
    db.posts.find({created_on: {$gte: new Date("2021-12-27T00:00:00.000Z"), $lt: new Date("2021-12-27T12:00:00.000Z")}})
    

    参考

    find - Select / filter data

    $gte - Greater Than / Equal

    $lt - Lower Than

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多