mongodb数组元素的总平均值

时间:2016-02-05 14:03:13

标签: mongodb aggregation-framework

我在mongodb 2.6.11中收集了文件,其中'cpu'是显示[cpu0,cpu1]的数组,见下面的例子

{ cpu: [ '100','20' ], hostname: 'host1',_id: 1 },
{ cpu: [ '40','30' ], hostname: 'host1',_id: 2 }, etc

我正在寻找'host1'上的平均cpu,即['70','25'](因为'100'+ '40'/ 2 = '70'和'20'+ '30'=' 25')。我正在尝试聚合cpu1,但它没有给我正确的结果

db.collection.aggregate(
    [
        {
            $group:
            {
                _id:"hostname",
                avgCPU: {$avg: "$cpu.1"}
            }
        }
    ]
);

1 个答案:

答案 0 :(得分:1)

在MongoDB 2.6中,不支持聚合中的位置表示法,您需要(get-psprovider 'Registry').Home = 'path'您的文档,并在下一阶段执行$unwind

但是在MondoDB 3.2中,你有$ arrayElemAt运算符,它返回指定索引$avg的元素

根据您发布的文档结构,此查询将执行以下操作:

{ $arrayElemAt: [ <array>, <idx> ] }