Получить сумму счета из коллекции с массивами - PullRequest
0 голосов
/ 06 июня 2019

У меня есть коллекция с такой структурой:

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 Ответ

3 голосов
/ 06 июня 2019

Вот как это сделать:

db.shops.aggregate(
    [
        {
            "$unwind": "$items"
        },
        {
            "$group" : {
                _id : "$shopId",
                totalSold: { $sum: { $multiply: [ "$items.price", "$items.quantity" ] } },
            }
        }
    ]
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...