Mongo和数组索引

时间:2016-11-29 13:41:29

标签: arrays mongodb

我想从数组数组中得到一个总和,但到目前为止我还没有找到任何解决方案。

数组看起来像这样,我希望获得所有数组值的总和[2] Arrays

因此,对于这个数组,我应该得到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' } 在这种情况下不起作用。

1 个答案:

答案 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
}

将上述内容应用于您的案例变得微不足道。