我正在使用MongoDB聚合框架,需要获取金额字段的绝对值,我在项目部分和组部分中使用,例如:
'$project' => {
'amount' => 1,
'_id' => 0
}
...
'$group' => {
'total' => {'$sum' => '$amount'}
}
在这种情况下,您如何获取'金额'字段的绝对值?我无法在文档中找到它(也许它不可用?)
答案 0 :(得分:12)
它不能直接使用,但您可以使用$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' } }