2013-04-05 64 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