[英]MongoDB Aggregation Sum on Objects in Array
我已经看到很多关于如何对数组中数组中对象的属性求和的答案,但我试图对跨文档的数组中对象的各个属性求和。 例如,给定此文档结构:
{
"id": 1,
"stats": [
{
"number": 100,
"year": 2014
},
{
"number": 200,
"year": 2015
}
]
},
{
"id": 2,
"stats": [
{
"number": 50,
"year": 2014
},
{
"number": 75,
"year": 2015
}
]
}
所需的输出是:
{
"stats": [
{
"number": 150,
"year": 2014
},
{
"number": 275,
"year": 2015
}
}
我不想对 2014 年和 2015 年的number
属性求和,我想对这两个文档在 2014 年求和。
db.test.aggregate([
{ $unwind: "$stats" },
{
$group: {
_id:"$stats.year",
number:{$sum:"$stats.number"}
}
},
{
$group: {
_id: 0,
stats:{ $push: {year:"$_id",number:"$number"}}
}
},
{
$project:{stats:1,_id:0}
} ])
这将为您提供所需的输出
db.getCollection('yourcollection').aggregate([
{ $unwind: "$stats" },
{
$group: {
_id: "$stats.year",
number:{$sum:"$stats.number"}
}
},
{
$group: {
_id: null,
stats:{ $push: {year:"$_id",number:"$number"}}
}
},
{
$project:{stats:1,_id:0}
}
])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.