如何将mongodb聚合为最终的总和?从前面计算的总和

tcomlyy6  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(317)

如何合计最终总额?从前面计算的总和
这是最初的结果。

[
  {
    "name": "a",
    "prices": 10,
  },
  {
    "name": "a",
    "prices": 20,
  }
]

但我必须这么做。

[
  {
    "name": "a",
    "prices": 10,
  },
  {
    "name": "a",
    "prices": 20,
  },
//i need to do more//
  {
    "name": "total",
    "total":30
  }

]
这是示例图片。
在此处输入图像描述

xmakbtuz

xmakbtuz1#

$group 按null并在中构造根文档数组 docs ,获取总价 totalPrices concat电流 docs 和总价
$concatArrays $unwind 解构 docs 数组 $project 显示两个字段 docs 对象

db.collection.aggregate([
  {
    $group: {
      _id: null,
      docs: { $push: "$$ROOT" },
      totalPrices: { $sum: "$prices" }
    }
  },
  {
    $project: {
      docs: {
        $concatArrays: [
          "$docs",
          [
            {
              name: "total",
              prices: "$totalPrices"
            }
          ]
        ]
      }
    }
  },
  { $unwind: "$docs" },
  {
    $project: {
      _id: 0,
      name: "$docs.name",
      prices: "$docs.prices"
    }
  }
])

操场

相关问题