如何获得最近4个月的平均值

时间:2018-03-22 21:43:52

标签: mongodb mongoose mongodb-query aggregate-functions mongoose-schema

我正在尝试这个聚合最近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 }

1 个答案:

答案 0 :(得分:1)

它无效,因为OZONE字段是字符串,您无法在字符串上计算 $avg 。另外,它不是有效数字:"8:84"应为8.84

来自mongodb documentation

  

<强> $平均

     

返回由此产生的数值的平均值   将指定的表达式应用于一组中的每个文档   按键共享同一组的文档。 $ avg忽略非数字   值。

否则聚合查询是正确的,这是一个显示它的链接:mongo playground.net/p/VaL-Nn8e21E