mongodb 从数据库中获取日期介于昨天和今天之间的对象

2ic8powd  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(335)

我有以下模式。

const dish = new Schema({
    name: {
        type: string,
    },
        createdAt: {
        type: Date,
    },
)

我想得到昨天12AM到今天12AM之间制作的菜肴。

aiazj4mn

aiazj4mn1#

const dish = await Dish.aggregate([
 {
    $match: {
        $and: [
            { createdAt: { $lt: new Date(new Date().setHours(0, 0, 0))}},
            { createdAt: { $gte: new Date(new Date().setHours(0, 0, 0) - 24 * 60 * 60 * 1000)}}
       ]
     }
   }
]);

编辑:以下是解释。
new Date()给予类似于2022-11-15T22:14:00.000+00:00的日期,但new Date().setHours(0,0,0)会将值设置为12AM,但也会提供类似于1668449700000的毫秒值。
createdAt的日期值如2022-11-15T22:14:00.000+00:00。使用{ $lt: new Date().setHours(0, 0, 0)}}时,它将尝试比较dateinteger[ 2022-11-15T22:14:00.000+00:001668449700000 ]之间的值,因此您将得到错误的结果。
因此,您需要将其放入一个新的Date()中,以获取Date中的值,以便$lt可以正确比较。new Date(new Date().setHours(0, 0, 0))}将等于new Date(1668449700000),这将为您提供一个日期值,$lt也将正常工作。
对于第二个条件,24 * 60 * 60 * 1000是以毫秒为单位的1天,所以我减去了它,得到了昨天上午12点的毫秒。

相关问题