2014-12-28 109 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