在 MongoDB 中使用 $match 在日期过滤器中使用变量

问题描述 投票:0回答:1

我试图弄清楚如何使用 $set 函数中定义的变量来过滤数据。在我的示例中, $startdate 是我的变量,我想在我的 $match 语句中使用它。但是当我执行查询时它不返回任何数据。我将如何使这个查询有效?

最初,我想做的是使用匹配来仅过滤昨天的数据,其中开始日期和结束日期将在变量中定义。

 {$set: {startdate: new Date()} },
{ $match: {
            "createdate":{ 

                        "$gte" :  {$date:"$startdate"},
                        "$lte" :  {$date:"2023-12-12T15:59:59.999Z"}
                   }
}
},
mongodb mongodb-query
1个回答
0
投票

我建议使用第三方日期库,例如LuxonDay.jsmoment.js。那么它就会简单地像这样:

{ $match: {
    createdate: { 
        $gte: DateTime.now().minus({days:1}).startOf('day').toJsDate(),
        $lte: DateTime.now().minus({days:1}).endOf('day').toJsDate()
    }
} }
© www.soinside.com 2019 - 2024. All rights reserved.