Mongodb小组从总体方面总结两个类似数据的数组

我正在运行针对不同级别的社交数据的查询,并得到了一些相当大的聚合pipe道,然后在$ facet内运行。 $ facet部分的结果出来了两个数组然后我想合并。 例如。

{ "first": [ { "_id": { "name": "one", "_id": "1" }, "date": [ "2017-09-07T00:00:00.000Z" ], "data": [ 1000 ] }, { "_id": { "name": "two", "_id": "2" }, "date": [ "2017-09-07T00:00:00.000Z" ], "data": [ 2000 ] } ], "second": [ { "_id": { "name": "1", "_id": "one" }, "date": [ "2017-09-07T00:00:00.000Z" ], "data": [ 1000 ] }, { "_id": { "name": "two", "_id": "2" }, "date": [ "2017-09-07T00:00:00.000Z" ], "data": [ 2000 ] } ] } 

我想将这些结果分组在一起,加起来总计

 [ { "_id": { "name": "1", "_id": "one" }, "date": [ "2017-09-07T00:00:00.000Z" ], "data": [ 2000 ] },{ "_id": { "name": "2", "_id": "two" }, "date": [ "2017-09-07T00:00:00.000Z" ], "data": [ 4000 ] }] 

我有一个查询组合单个的响应,让他们到这个级别,但缺less的东西,让我在两个数组合并。 我已经尝试解开第一个和第二个数组,但一直没能find一个解决scheme,将数据结合到两个数组中。

任何帮助,提示或知识非常赞赏。

使用$concatArrays$facets输出合并数组,然后用$arrayElemAt $group ,为$first$sum accumulatorselect第一个元素。

 [ { "$project": { "combine": { "$concattArrays": [ "$first", "$second" ] } } }, { "$unwind": "$combine" }, { "$group": { "_id": "$combine._id", "date": { "$first": { "$arrayElemAt": [ "$combine.date", 0 ] } }, "data": { "$sum": { "$arrayElemAt": [ "$combine.data", 0 ] } } } } ]