我想从数组数组中得到一个总和,但到目前为止我还没有找到任何解决方案。
因此,对于这个数组,我应该得到13317 + 4719的总和值。我尝试使用$sum
但我不知道如何指向2
时的指数$median_sale_prices.2
。在另一个数组中 - Get-Content data.txt | Foreach { $_ -replace "^(\d\d)/(\d\d)/(\d\d\d\d),(.*)",'$3/$1/$2,$4' }
在这种情况下不起作用。
答案 0 :(得分:1)
您可能需要首先使用 $unwind
运算符展平数组字段,之后您可以使用 $arrayElemAt
运算符作为 $sum
累加器运算符中的表达式,用于对 $group
管道步骤中的数组元素求和。
使用以下示例可以最好地解释这个概念:
填充测试集合
db.test.insert([
{
"x": [
[1, 1, 1],
[0, 1, 1],
[1, 0, 1],
[1, 1, 0],
[1, 0, 1],
[0, 1, 1]
]
}
])
运行聚合查询
db.test.aggregate([
{ "$unwind": "$x" },
{
"$group": {
"_id": null,
"total": {
"$sum": {
"$arrayElemAt": [ "$x", 2 ]
}
}
}
}
])
示例输出
{
"_id" : null,
"total" : 5
}
将上述内容应用于您的案例变得微不足道。