将 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] }
]
}
}
}
]
我正在尝试在基于 属性 的聚合中使用 $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] }
]
}
}
}
]