gpt4 book ai didi

arrays - Mongodb 对聚合方面的两个相似数据数组进行分组和求和

转载 作者:可可西里 更新时间:2023-11-01 10:48:45 26 4
gpt4 key购买 nike

我正在运行针对不同级别的社交数据的查询,并且已经使用了一些相当大的聚合管道,然后在 $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
]
}]

我有一个查询,该查询将各个响应分组以使其达到此级别,但缺少一些允许我合并两个数组的内容。我已经尝试展开第一个和第二个数组,但未能找到将两个数组中的数据结合起来的解决方案。

非常感谢任何帮助、提示或知识。

最佳答案

使用 $concatArrays 合并来自 $facets 输出的数组,然后是 $group$arrayElemAt 来选择$first$sum 累加器的第一个元素。

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

关于arrays - Mongodb 对聚合方面的两个相似数据数组进行分组和求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46100376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com