我必须每天计算收集的平均值。我每分钟创建一个查询。现在我想要平均每天转换此查询。 我的每分钟查询如下
db.voltage.aggregate(
{
$unwind: {
path:"$KeyValues",
includeArrayIndex:"arrayIndex",
preserveNullAndEmptyArrays:true
}
},
{
$project: {
timestamp:{
"$add":["$EventTS",{"$multiply":[60000,"$arrayIndex"]}]
} ,
"RVoltage":"$KeyValues.RVoltage",
arrayIndex:1,
}
},
{
$match: {
$and: [
{RVoltage: {$ne: null}}
]
}
}
);
你能建议我如何计算每天的平均值吗?
答案 0 :(得分:1)
按日期分组
db.voltage.aggregate([
{$project: {
date: {$dateToString: {format: "%Y-%m-%d", date: "$EventTS"}},
KeyValues:1
}},
{$unwind: '$KeyValues'},
{$project: {
date: 1,
RVoltage: '$KeyValues.RVoltage'
}},
{$group: {
_id: '$date',
avg: {$avg: '$RVoltage'}
}},
{$sort: {_id: 1}}
])
{ "_id" : "2015-07-02", "avg" : 234.1845454545454 }
{ "_id" : "2016-06-30", "avg" : 249.9316666666667 }
{ "_id" : "2016-07-01", "avg" : 244.08681818181822 }