我有许多报告都是用以下json结构构建的 日期/国家/供应商,其中日期/国家/供应商是变量,实际数据存储在此json树的叶子上。
例如,简化的json将在下面看
{
"1/2/2001" :
{
"DE": {
"Vendor A" : {
leaf data...
revenue:123213
}
"Vendor B" : {
leaf data...
revenue:123213
}
}
}
现在,假设我想汇总收入。有没有办法使用Mongo的聚合框架快速完成此操作,或者我依赖于执行三个嵌套for循环。
提前致谢,
答案 0 :(得分:1)
看起来这个agg框架中的这个功能是有计划的。见https://jira.mongodb.org/browse/SERVER-5947
您仍然可以使用map reduce。
答案 1 :(得分:1)
如果您可以将JSON构建为:
{
"date": "1/2/2001",
"country": "DE",
"vendors": [
{
"vendor": "Vendor A",
"leafdata": "xxx",
"revenue": 123213
},
{
"vendor": "Vendor b",
"leafdata": "xxx",
"revenue": 123213
}
]
}
然后使用聚合框架轻松实现,您可以进行如下查询:
[{
$unwind: '$vendors'
},
{
$group: {
_id: '$country',
revenue: {
$sum: '$vendors.revenue'
}
}
}]
这将为您收藏的所有国家/地区带来收入。
注意:我只使用日期作为字符串,但我建议使用ISODate。