从具有数组的集合中获取发票总额

时间:2019-06-05 21:16:09

标签: mongodb mongodb-query

我有一个具有以下结构的集合:

db.shops.insert({
  "customer": "21c3",
  "shopDate": new Date("2019-06-03T23:00:00Z"),
  "shopId" : "Supermarket",
  "items" : [
    {
      "productName": "Water",
      "price": 3,
      "quantity": 2
    },
    {
      "productName": "Candies",
      "price": 1,
      "quantity": 5
    }
  ]
});

我需要查询以获取每个shopId的总数。

这是我所做的,但是没有用:

db.shops.aggregate(
   [
      {
        $group : {
           _id : $shopName,
          totalSold: { $sum: { $multiply: [ "$price", "$quantity" ] } },
        }
      }
   ]
);

1 个答案:

答案 0 :(得分:3)

这是方法:

db.shops.aggregate(
    [
        {
            "$unwind": "$items"
        },
        {
            "$group" : {
                _id : "$shopId",
                totalSold: { $sum: { $multiply: [ "$items.price", "$items.quantity" ] } },
            }
        }
    ]
);