我正在使用MongoDB聚合框架,需要对一个金额字段取绝对值,在项目部分和组部分都会用到,例如:
'$project' => {
'amount' => 1,
'_id' => 0
}
....
'$group' => {
'total' => {'$sum' => '$amount'}
}
在这种情况下,如何获取"amount"字段的绝对值?我没有在文档中找到相关信息(也许不可用?)
我正在使用MongoDB聚合框架,需要对一个金额字段取绝对值,在项目部分和组部分都会用到,例如:
'$project' => {
'amount' => 1,
'_id' => 0
}
....
'$group' => {
'total' => {'$sum' => '$amount'}
}
在这种情况下,如何获取"amount"字段的绝对值?我没有在文档中找到相关信息(也许不可用?)
虽然直接不可用,但您可以使用$cond
操作符和$subtract
运算符在$project
中实现它,就像这样(作为JavaScript对象):
{ $project: {
amount: {
$cond: [
{ $lt: ['$amount', 0] },
{ $subtract: [0, '$amount'] },
'$amount'
]
}}}
如果 amount < 0
,那么使用 0 - amount
,否则直接使用 amount
。
更新
从 MongoDB 3.2 版本开始,你可以使用新的 $abs
聚合表达式操作符来直接完成此操作:
{ $project: { amount: { $abs: '$amount' } }
$multiply
乘以-1:{ $multiply: [-1, '$amount'] }
。 - WiredPrairie