我正在尝试这个聚合最近4个月记录每个月的OZONE平均值但平均值为null如何获得平均值
db.Air_pollution.aggregate([
{$match:{CREATE_DATE:{$lte:new Date(),$gte:new Date(new Date().setDate(new
Date().getDate()-120))}}},
{$group:{_id:{month:{$month:"$CREATE_DATE"},year:
{$year:"$CREATE_DATE"}},avgofozone:{$avg:"$OZONE"}}},
{$sort:{"year":-1}},{$project:
{year:'$_id.year',month:'$_id.month',_id:0,avgofozone:1}}
])
输出:
{ "avgofozone" : null, "year" : 2018, "month" : 2 }
{ "avgofozone" : null, "year" : 2018, "month" : 3 }
{ "avgofozone" : null, "year" : 2018, "month" : 1 }
答案 0 :(得分:1)
它无效,因为OZONE
字段是字符串,您无法在字符串上计算 $avg
。另外,它不是有效数字:"8:84"
应为8.84
<强> $平均强>
返回由此产生的数值的平均值 将指定的表达式应用于一组中的每个文档 按键共享同一组的文档。 $ avg忽略非数字 值。
否则聚合查询是正确的,这是一个显示它的链接:mongo playground.net/p/VaL-Nn8e21E