2013-04-05 86 views
0

我用以下结构文档集合的子文档:聚集与未知的键名

"_id" : "20130104/activity", 
"hourly" : { 
    "0" : { 
     "activity1" : 25, 
     "activity2" : 10 
    }, 
    "1" : { 
     "activity1" : 25, 
     "activity2" : 10, 
     "activity3" : 5 
    }, 
    "2" : { 
     "activity1" : 25, 
     "activity2" : 10, 
     "activity3" : 5 
    } 
    } 

我希望能够汇聚这些数据能够产生每月和每日的统计资料,例如文档如下图所示:

"date" : "20130104", 
"total" : { 
     "activity1" : 75, 
     "activity2" : 30, 
     "activity3" : 10 
      } 

我的问题是,我不知道在小时子文档键名事先 - 这使得使用聚合框架挺难的。 (或者我只是误解了一些东西)。

有什么建议吗?

+0

每个'hourly'数组最多有24个元素? – sambomartin 2013-04-06 00:09:10

+0

是的。 (它不是数组) – Johnny 2013-04-06 08:07:11

回答

0

由于您不需要知道密钥的名称,因此map reduce可用于计算报告数据。另一种方法是我们每天24小时都可以使用24小时密钥的文档,然后轻松地使用聚合框架。即使这种方法也会给你提升性能,这是常见的模式

+1

我的文档已经有24小时密钥,你能举一个简短的例子来说明如何使用这个例子的聚合框架吗? – Johnny 2013-04-06 08:12:58