Java 如何合计MongoDB的最终总额?根据之前计算的总和

Java 如何合计MongoDB的最终总额?根据之前计算的总和,java,mongodb,mongoose,mongodb-query,aggregation-framework,Java,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,如何合计最终总额?根据之前计算的总和 这是最初的结果 [ { "name": "a", "prices": 10, }, { "name": "a", "prices": 20, } ] 但我必须这样做 [ { "name": "a", "prices&quo

如何合计最终总额?根据之前计算的总和

这是最初的结果

[
  {
    "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
  }
]

这是示例图片

  • $group
    按null键,并在
    文档中构造根文档数组
    ,在
    总价中获取总价
  • 使用
    $concatarray
  • $unwind
    解构
    文档
    数组
  • $project
    显示
    文档
    对象中的两个字段

  • $group
    按null键,并在
    文档中构造根文档数组
    ,在
    总价中获取总价
  • 使用
    $concatarray
  • $unwind
    解构
    文档
    数组
  • $project
    显示
    文档
    对象中的两个字段

请添加示例文档和用于第一个结果集的查询。@TusharGupta curioustushar我添加了一个示例图像,以便于理解。谢谢你关注我的问题。原始结果是否意味着这些是DB中的文件?还是聚合管道的结果?我可以查询数据库中的文档。请添加示例文档和用于第一个结果集的查询。@TusharGupta curioustushar我添加了一个示例图像,以便于理解。谢谢你关注我的问题。原始结果是否意味着这些是DB中的文件?还是聚合管道的结果?我可以查询数据库中的文档。非常感谢您的回答和解释。非常感谢您的回答和解释。非常感谢您的回答和解释。非常感谢您的回答和解释++
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"
    }
  }
])