【发布时间】:2021-12-16 03:56:31
【问题描述】:
我在我的订单集合上实现了一个聚合,我在其中计算了一个这样的 driverDebt 字段,
driverDebt: {
$sum: {
$cond: [
{
$in: ["$status", ["driverHasPaid", "paid"]],
},
0,
"$driverDebt",
],
},
},
如果满足我想要的条件,我想要做的是从“$driverDebt”中减去另一个值,例如像这样(它错了):
driverDebt: {
$sum: {
$cond: [
{
$in: ["$status", ["driverHasPaid", "paid"]],
},
0,
$sum: { $cond: [{ $eq: ["$deliveryFeeCollected", "no"] }, $subtract: ["$driverDebt", "$deliveryPrice"], "$driverDebt"]
},,
],
},
},
所以基本上我想检查是否没有收取deliveryFee,从driverDebt中扣除相当于deliveryPrice的价格。我可以在聚合结果上运行一个循环并在那里进行数学运算,但我想在聚合中实现它。希望它足够清楚,可以理解。 谢谢,
【问题讨论】:
标签: node.js mongodb express mongoose aggregate