我是MongoDB的新手,如果我错过了文档中的内容,请原谅我。我的收藏是这样的:
{
"_id" : ObjectId("57553e7015e4117a4343c18c"),
"BuyingPrice" : 55.5,
"Quantity" : NumberLong(1),,
"Brand" : "Ranamina",
"Amount" : 79.99,
"Profit" : 24.49,
"ProductId" : NumberLong(55319),}
在计算每个品牌的总金额后,我想看看每个品牌有多少产品。
我想看结果
{"Quantity": 1982,
"Amount": 155,
"Number_of_product" :12,
"_id":{"Brand": "Ranamina"}
}
这是我的代码:
collection_test.aggregate([
{
'$group': {
'_id': {
'Brand': '$Brand',
},
'Amount': {'$sum': '$Amount'},
'product': {'$addToSet': '$ProductId'},
'Amount_sum': {'$addToSet': '$Amount'},
},
},
{'$group': {
'_id': {'Brand': '$_id.Brand', 'ProductId': '$product'},
}
},
{
'$project': {'count': {'$size': '$_id.ProductId'},
'Groups': '$_id.Groups', '_id': 0, 'Amount_sum':1,
}}
])
我在组方法中使用了组,但是我无法访问总金额和总利润。有没有办法访问这些?
答案 0 :(得分:1)
这个怎么样?:
collection_test.aggregate([
{
'$group': {
'_id': {
'Brand': '$Brand',
},
'Amount': {'$sum': '$Amount'},
'Quantity': {'$sum': '$Quantity'},
'product': {'$addToSet': '$ProductId'},
},
},
{
'$project': {
'Quantity': True,
'Amount': True,
'Number_of_product': {'$size': '$product'}
}
}])
你绝对不需要两个“$ group”阶段。