无法从MongoDB汇总中获取$ sum

时间:2019-03-05 00:06:32

标签: mongodb

在下面的查询中,我成功获取了所有out = subprocess.check_output(["java -jar test.jar"])数组的总长度,但我也尝试对这些数组中每个对象的"字段求和,并且该字段当前返回零。我在做什么错了?

contribution

文档如下:

contribution_receipt_amount

我的输出看起来像这样:

 doc.aggregate(
        [
          { $unwind: '$contributions' },
          {
            $group: {
              _id: candidate.candidate_id,
              contributions: { $sum: 1 },
              total: { $sum: '$contribution_receipt_amount' }
            }
          }
        ],
        { allowDiskUse: true }
      )

1 个答案:

答案 0 :(得分:1)

这里的收获是字段contribution_receipt_amountcontributions文档的子元素。因此,您应使用.表示法来访问子文档元素。

"contributions" : {
    "entity_type_desc" : "INDIVIDUAL",
    "contribution_receipt_amount" : 109.2
}

这是更新的查询

doc.aggregate(
        [
          { $unwind: '$contributions' },
          {
            $group: {
              _id: candidate.candidate_id,
              contributions: { $sum: 1 },
              total: { $sum: '$contributions.contribution_receipt_amount' }
            }
          }
        ],
        { allowDiskUse: true }
      )

如尼尔建议的那样

doc.aggregate(
        [          
          {
            $group: {
              _id: candidate.candidate_id,
              contributions: { $sum: 1 },              
              total: { $sum: {$sum: "$contributions.contribution_receipt_amount"} }
            }
          }
        ],
        { allowDiskUse: true }
      )