我正在使用 MongoDB 聚合框架,需要获取金额字段的绝对值,我在项目部分和组部分都使用了该字段,例如:
'$project' => {
'amount' => 1,
'_id' => 0
}
……
'$group' => {
'total' => {'$sum' => '$amount'}
}
在这种情况下,您如何获取“金额”字段的绝对值?我无法在文档中找到它(也许它不可用?)
我正在使用 MongoDB 聚合框架,需要获取金额字段的绝对值,我在项目部分和组部分都使用了该字段,例如:
'$project' => {
'amount' => 1,
'_id' => 0
}
……
'$group' => {
'total' => {'$sum' => '$amount'}
}
在这种情况下,您如何获取“金额”字段的绝对值?我无法在文档中找到它(也许它不可用?)
它不是直接可用的,但您可以使用$cond
运算符和 a$subtract
中的 a来实现它$project
(作为 JavaScript 对象):
{ $project: {
amount: {
$cond: [
{ $lt: ['$amount', 0] },
{ $subtract: [0, '$amount'] },
'$amount'
]
}}}
所以 if amount < 0
, then0 - amount
被使用,否则amount
直接使用。
更新
从MongoDB 3.2$abs
版本开始,您可以直接使用新的聚合表达式运算符来执行此操作:
{ $project: { amount: { $abs: '$amount' } }