我在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"}
}
}
]
);
答案 0 :(得分:1)
在MongoDB 2.6中,不支持聚合中的位置表示法,您需要(get-psprovider 'Registry').Home = 'path'
您的文档,并在下一阶段执行$unwind
。
但是在MondoDB 3.2中,你有$ arrayElemAt运算符,它返回指定索引$avg
的元素
根据您发布的文档结构,此查询将执行以下操作:
{ $arrayElemAt: [ <array>, <idx> ] }