【发布时间】:2019-08-08 04:20:14
【问题描述】:
{
"_id":1
"Data1": "R"
"Data2": "A"
"Data3": [{"TP":"1", "Vl":200},{"TP":"2", "Vl":100}, {"TP":"1", "Vl": 50} ]
}
{
"_id":2
"Data1": "G"
"Data2": "A"
"Data3": [{"TP":"1", "Vl":400}]
}
{
"_id":3
"Data1": "R"
"Data2": "K"
"Data3": [{"TP":"2", "Vl":500}, {"TP":"3", "Vl":20}]
}
我需要将 Data3 中的所有 Vl 按 data1 分组,返回如下:
[{"Data1":"R", "sum":870}, {"Data1":"G", sum:400}]
有些像 Sql:
Select Data1, sum(Data3.Vl)
from Collection
Group By
Data1
我试试这个,但总和为 0。
db.getCollection("Collection").aggregate(
[
{
"$group" : {
"_id" : {
"Data1" : "$Data1"
},
"SUM(Data3᎐Vl)" : {
"$sum" : "$Data3.Vl"
}
}
},
{
"$project" : {
"Data1" : "$_id.Data1",
"SUM(Data3᎐Vl)" : "$SUM(Data3᎐Vl)",
"_id" : NumberInt(0)
}
}
],
{
"allowDiskUse" : true
}
);
【问题讨论】: