【问题标题】:mongodb: sum of difference between two fields [duplicate]mongodb:两个字段之间的差异之和[重复]
【发布时间】:2019-10-19 11:42:05
【问题描述】:

我正在尝试构建一个返回两个字段之间差异的查询。 以下是我收藏的文件:

[
 { _id: 1, type: 'in', amount: 10 },
 { _id: 2, type: 'in', amount: 5 },
 { _id: 3, type: 'out', amount: 7}
]

我正在尝试获取balance:“输入”金额减去“输出”金额的总和。 输出应该是这样的:

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

这是我试图做的:

db.aggregate([
 {
   $group: {
     _id: '$type',
     total: { $sum: '$amount' } 
   }
 }
])

这只是输出每种类型的总数: 在 --> 15 中, 出 --> 7

后期如何找到上述结果的差异?

提前谢谢你

【问题讨论】:

    标签: mongodb sum aggregate


    【解决方案1】:

    $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 ]}
          }}}
        }
      }
    ])
    

    【讨论】:

      猜你喜欢
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      相关资源
      最近更新 更多