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 ] } } } } ]