8

我正在使用 MongoDB 聚合框架,需要获取金额字段的绝对值,我在项目部分和组部分都使用了该字段,例如:

'$project' => {
          'amount' => 1,
          '_id' => 0
        }

……

    '$group' => { 
      'total' => {'$sum' => '$amount'}
    }

在这种情况下,您如何获取“金额”字段的绝对值?我无法在文档中找到它(也许它不可用?)

4

1 回答 1

12

它不是直接可用的,但您可以使用$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' } }
于 2013-07-10T03:34:54.577 回答