8

MongoDB 集計フレームワークを使用しており、プロジェクト部分とグループ部分の両方で使用する金額フィールドの絶対値を取得する必要があります。例:

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

....

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

この場合、「金額」フィールドの絶対値をどのように取得しますか? ドキュメントで見つけることができませんでした(おそらく利用できないのでしょうか?)

4

1 に答える 1

12

直接利用することはできませんが、次のように$cond演算子と a$subtract$project(JavaScript オブジェクトとして)使用して実行できます。

{ $project: {
  amount: {
    $cond: [
      { $lt: ['$amount', 0] },
      { $subtract: [0, '$amount'] }, 
      '$amount'
    ]
}}}

したがって、ifamount < 00 - amount使用され、そうでない場合amountは直接使用されます。

アップデート

MongoDB の3.2リリースの時点で、新しい$abs集計式演算子を使用してこれを直接行うことができます。

{ $project: { amount: { $abs: '$amount' } }
于 2013-07-10T03:34:54.577 に答える