我有一个具有以下结构的集合:
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" ] } },
}
}
]
);
答案 0 :(得分:3)
这是方法:
db.shops.aggregate(
[
{
"$unwind": "$items"
},
{
"$group" : {
_id : "$shopId",
totalSold: { $sum: { $multiply: [ "$items.price", "$items.quantity" ] } },
}
}
]
);