Arrays 在MongoDB中展开多个对象数组

Arrays 在MongoDB中展开多个对象数组,arrays,mongodb,Arrays,Mongodb,我有3个由对象组成的数组。当我试着解开它们时,我得到了几个相同的数组。我并没有得到一组完整的3个数组作为对象。下面是我尝试展开阵列之前的阵列输出。有没有更好的方法来干净地解开它们?谢谢 { } 最终结果: { { "_id": "credit card bill", "last_30_days": 4500.37, "last_60_days": 1000.04, "last_90_days": 1500.06 }, { "_id": "electric bill", "last_30_d

我有3个由对象组成的数组。当我试着解开它们时,我得到了几个相同的数组。我并没有得到一组完整的3个数组作为对象。下面是我尝试展开阵列之前的阵列输出。有没有更好的方法来干净地解开它们?谢谢

{

}

最终结果:

{

 {
"_id": "credit card bill",
"last_30_days": 4500.37,
"last_60_days": 1000.04,
"last_90_days": 1500.06
},
 {
"_id": "electric bill",
"last_30_days": 0,
"last_60_days": 7500.41,
"last_90_days": 7500.41
}
}

您可以尝试
$concatarray
跨天合并所有金额

差不多

db.collection.aggregate([
  {$project:{all_amounts:{$concatArrays:["$amount_last_30_days", "$amount_last_60_days", "$amount_last_90_days"]}}}
])
您可以
$unwind
进行进一步处理

更新-添加
$group
阶段以合计金额

db.collection.aggregate([
  {$project:{all_amounts:{$concatArrays:["$amount_last_30_days", "$amount_last_60_days", "$amount_last_90_days"]}}},
  {$unwind:"$all_amounts"},
  {$group:{_id:"$all_amounts._id", "last_30_days": {$sum:"$all_amounts.last_30_days"}, "last_60_days":{$sum:"$all_amounts.last_60_days"}, "last_90_days":{$sum:"$all_amounts.last_90_days"}}}
])

您能发布您希望最终数据结构看起来像什么吗?发布的最终结果。更进一步,我将如何根据发布的最终结果对上面的项目进行分组。谢谢你的帮助。你能帮我回答上面提到的最后一个问题吗。谢谢不客气。更新答案,包括金额总和。欢迎您。这就是我现在能做的。我相信答案可以改进,因为实际上不需要求和,因为对于_id/天范围,您只有一个条目。稍后将添加一些注释和更新。谢谢Veeram。谢谢。我也注意到了同样的事情,不客气。由于我们主要在这里进行格式化,因此您应该使用客户端进行格式化,或者使用提供的答案。您的结构具有动态键,聚合框架要求您具有一致的结构。您应该考虑重构架构,以便更好地使用聚合框架来满足未来的需求。
db.collection.aggregate([
  {$project:{all_amounts:{$concatArrays:["$amount_last_30_days", "$amount_last_60_days", "$amount_last_90_days"]}}},
  {$unwind:"$all_amounts"},
  {$group:{_id:"$all_amounts._id", "last_30_days": {$sum:"$all_amounts.last_30_days"}, "last_60_days":{$sum:"$all_amounts.last_60_days"}, "last_90_days":{$sum:"$all_amounts.last_90_days"}}}
])