mongodb:两个字段之间的差异之和

时间:2019-06-03 22:57:00

标签: mongodb sum aggregate

我试图建立一个查询,返回两个字段之间的差异。 这是我收藏的文件:

NA

我正在尝试获取[ { _id: 1, type: 'in', amount: 10 }, { _id: 2, type: 'in', amount: 5 }, { _id: 3, type: 'out', amount: 7} ] :“入”金额减去“出”金额的总数。 输出应类似于:

balance

这是我尝试做的事情:

{ ..., total: 8 } ( (10 + 5) - 7 )

这仅输出每种类型的总数: 在-> 15, 出来-> 7

如何在以后的阶段中发现以上结果的差异?

提前谢谢

1 个答案:

答案 0 :(得分:0)

$group,其中_idnull,并使用$cond将值设为正或负。具体来说,如果类型不是in,则可以使用$multiply$total乘以-1。像下面这样的东西应该起作用:

db.aggregate([
  {
    $group: {
      _id: '$type',
      total: { $sum: '$amount' } 
    }
  },
  {
    $group: {
      _id: null,
      total: { $sum: { $cond: {
        if: { $eq: [ '$_id', 'in']},
        then: '$total',
        else: { $multipy: [ '$total', -1 ]}
      }}}
    }
  }
])