如何在MongoDB中获取前一天的记录?

How to get previous day's records in MongodDB?

我正在使用 MongoDB,它有一个以毫秒为单位的时间字段。我正在尝试获取前一天的所有记录。 到目前为止,我已经搜索了显示如何获取前 24 小时记录的解决方案。但我只需要前一天的记录。请帮助编写此查询。 所以像这样

createdTime: {
     $lt: new Date().getTime(),
     $gt: new Date().getTime() - 1000 * 60 * 60 * 24,
},

但就像我解释的那样,这不是我想要的。

您可以通过这种方式获取前一天开始和结束的 UNIX 时间戳。
注意 - 以 UTC 时间开始和结束

var start = new Date().setUTCHours(0,0,0,0)-1000 * 60 * 60 * 24;
var end = new Date().setUTCHours(23,59,59,999)-1000 * 60 * 60 * 24;
console.log(start)
console.log(end)


console.log(new Date(start).toUTCString())
console.log(new Date(end).toUTCString())

var date = new Date();
date ; //# => today date
        
var yesterdayDate =  date.setDate(date.getDate() - 1);
        
createdTime: {
    $lt: date,
    $gt: yesterdayDate,
}

我们假设“前一天”是从今天前一天开始的 24 小时时间段。最简单的方法是使用基于 UTC 的时间并添加时区偏移量(如果需要)。

const timeZoneOffset = -5;

createdTime: {
     $gt: new Date().setUTCHours(0,0,0)-1000 * 60 * 60 * (24 + timeZoneOffset),
     $lt: new Date().setUTCHours(23,59,59,999)-1000 * 60 * 60 * (24 + timeZoneOffset)

},

每当你必须使用 date/time 算法时,我推荐 moment.js 库:

createdTime: {
   $lt: moment().endOf('day').subtract(1, 'day').toDate(),
   $gte: moment().startOf('day').subtract(1, 'day').toDate()
},

替代库是 luxon and day.js