2014-12-28 105 views
0
的鑰匙

我有一個像下面MongoDB的Agregation的子文檔

{ 
    date: ISODate(some-date) 
    story: { 
    a: 24, 
    b: 12 
    } 
}, 

{ 
    date: ISODate(some-date) 
    story: { 
    b: 16, 
    c: 14 
    } 
} 

一個文檔和我想要得到的結果有點像:

{ 
    a: 24, 
    b: 28, 
    c: 14 
} 

我已經在很多地方尋找這但找不到辦法。顯然放鬆不起作用,因爲它不是子陣列。而我無法弄清楚如何在此使用group。

+0

我想你可以用它做地圖縮小 http://docs.mongodb.org/manual/core/map-reduce/ 或與http://docs.mongod b.org/manual/core/aggregation-pipeline/然而我不熟悉最新的。 – gimpycpu

+0

我想用聚合管道獲得它,但目前爲止沒有運氣.. –

回答

1

如果你分組在整個收集,只需使用一個恆定值一樣null爲分組_id

db.test.aggregate([ 
    {$group: { 
     _id: null, 
     a: {$sum: '$story.a'}, 
     b: {$sum: '$story.b'}, 
     c: {$sum: '$story.c'}, 
    }} 
]) 

輸出:

{ 
    "result" : [ 
     { 
      "_id" : null, 
      "a" : 24, 
      "b" : 28, 
      "c" : 14 
     } 
    ], 
    "ok" : 1 
} 
+0

如果我不知道密鑰可能是什麼?就像我不知道它是蘋果還是蘋果。 –

+1

這是一個非常不同(更混亂)的問題。請參閱http://stackoverflow.com/questions/25187453/mongodb-aggregate-sum-each-key-on-a-subdocument – JohnnyHK