我正在玩MongoDB并有一个想法,但无法找到实现它的方法:
有stores
和customers
,因此单个store
可以将商品出售给不同的customers
,并且可以多次从同一store
购买商品。
我们假设我有一个名为purchases
的文件,以跟踪每次购买的情况:
purchases = [{
store_name: 'Store A',
customer_name: 'Customer One',
price: 89
},
{
store_name: 'Store A',
customer_name: 'Customer Two',
price: 190
},
{
store_name: 'Store A',
customer_name: 'Customer Two',
price: 10
}]
如果我在哪里返回按商店和客户分组的数据?我想要获取类似的东西:
{
store_name: 'Store A',
purchases: [{
customer_name: 'Customer One',
value:89
}, {
customer_name: 'Customer Two',
value: 200
}]
}
有没有办法单独使用mongo来实现这一目标?
答案 0 :(得分:0)
你可以尝试这种聚合
第一个$group
是按商店和客户名称分组到总和值
第二个$group
是按商店名称分组并将客户和值推送到数组
db.purchases.aggregate(
[
{$group : {
_id : {store_name : "$store_name", customer_name : "$customer_name"},
value : {$sum : "$price"}
}
},
{$group : {_id :"$_id.store_name", purchases : {$push : {customer_name : "$_id.customer_name", value :"$value"}}}}
]
)