将 mongodb 聚合变量传递给 NodeJs

Pass mongodb aggregation variable to NodeJs

我正在尝试在基于 属性 的聚合中使用 $gte 来自 Nodejs 中的聚合。

const twelveHours = 12 * 60 * 60 * 1000;
const pipeline = [
  { $addFields: { 
    twelveHoursBeforeStart: { $subtract: ['$startDate', twelveHours] } } // this works
  },
  { match: { 
    endDate: { $gte: new Date('$twelveHoursBeforeStart') }, // <- HERE pass a variable    
  },
]

我尝试过不同的解决方案,例如:

{ match: { 
  endDate: { $gte: '$twelveHoursBeforeStart' },
},

但没有一个真正有效

您可以在$match阶段进行这两项操作,

  • $expr表达式与聚合$gte运算符匹配,第一个参数是endDate,第二个减去条件
const twelveHours = 12 * 60 * 60 * 1000;
const pipeline = [
  {
    $match: {
      $expr: {
        $gte: [
           "$endDate",
           { $subtract: ["$startDate", twelveHours] }
        ]
      }
    }
  }  
]

Playground