MongoDB数组聚合

tha*_*van 7 mongodb

我有两个这样的文件

{ "_id" : ObjectId("552cd26276b783ed66031cc4"), "vals" : [  2,  3,  4,  5 ] }
{ "_id" : ObjectId("552cd26e76b783ed66031cc5"), "vals" : [  1,  2,  3,  4 ] }
Run Code Online (Sandbox Code Playgroud)

我需要这两个列表的总和

预期产量:

[3, 5, 7, 9]
Run Code Online (Sandbox Code Playgroud)

即[2 + 1,3 + 2,4 + 3,5 + 4]

我甚至不确定MongoDB中是否可以这样做.对此有何看法?

Tre*_*ers 0

抱歉我没有正确回答问题。我正在考虑如何对每个对象的数组求和。不在两个对象之间添加数组。

(上面编辑)

我对此很陌生,但我认为您想使用聚合运算符 $unwind ,它将分解数组,然后 $sum “vals”。它应该看起来像这样

db.Test.aggregate([{$unwind:"$vals"},{$group:{_id:"$_id","TotalVals":{$sum:"$vals"}}}])
Run Code Online (Sandbox Code Playgroud)

请参阅此处的运算符http://docs.mongodb.org/manual/reference/operator/aggregation-group/

此 ($unwind) 将为数组中的每个值创建一个文档,因此请注意您的内存是否有更大的集合。我相信这个($unwind)是在内存中完成的。