首页 > 解决方案 > 查询一个mongo对象——聚合

问题描述

我有一个这样的json:

[
  {
    "Customer_ID": 1,
    "Order": [
      {
        "Item": "A",
        "Price": 2,
        "Quantity": 6
      },
      {
        "Item": "B",
        "Price": 3,
        "Quantity": 6
      },
      {
        "Item": "C",
        "Price": 2,
        "Quantity": 8
      }
    ]
  }
]

我想要这样的结果:

总价是价格和数量的乘积

客户,总价格

1,46

2,..

3,..

有人可以帮我做mongo查询吗?

标签: mongodbnestedaggregation

解决方案


我希望这可以帮助你,

[{
    $project: {
        customer: '$Customer_ID',
        values: {
            $map: {
               input: '$Order',
               as: 'item',
               'in': { $multiply: [ '$$item.Price', '$$item.Quantity' ]}
            }
        }
    }
 }, 
 {
     $project: {
         customer:'$customer',
         totalValue: {
             $sum: '$values'
         }
     }
 }]

让我解释一下这里发生了什么,在第一个$project块中,我们将Customer_ID投影为customer并将每个OrderPriceQuantity的乘积 作为values。然后在下一个$project块中,我们将添加values数组中的所有项目并投影为totalValue


推荐阅读