Database
[/**very hot day*/{datum:ISODate("2021-08-30T12:30:00.000+00:00"),temperature:35.0},/** hot day*/{datum:ISODate("2021-05-30T12:30:00.000+00:00"),temperature:27.0},{_id:ObjectId("60fbcf880000000000000000"),datum:ISODate("2021-07-24T08:30:00.000+00:00"),temperature:19.5},/** winter days*/{datum:ISODate("2020-12-24T08:30:00.000+00:00"),temperature:-10.0},{datum:ISODate("2020-12-24T08:40:00.000+00:00"),temperature:-8.0},{datum:ISODate("2020-12-25T08:30:00.000+00:00"),temperature:-12.0},{datum:ISODate("2020-12-25T08:40:00.000+00:00"),temperature:-12.5}]
Query
db.collection.aggregate([{$group:{_id:{"year":{$year:"$datum"},"month":{$month:"$datum"},"day":{$dayOfMonth:"$datum"}},temp_avg:{$avg:"$temperature"},temp_min:{$min:"$temperature"},temp_max:{$max:"$temperature"}}},{$group:{_id:{"year":"$_id.year","month":"$_id.month",},winter_days_count:{$sum:{"$cond":{"if":{$lt:["$temp_min",0]},"then":1,"else":0}}},cold_days_count:{$sum:{"$cond":{"if":{$lt:["$temp_max",10]},"then":1,"else":0}}},hot_days_count:{$sum:{"$cond":{"if":{$and:[{$gte:["$temp_max",25]},{$lte:["$temp_max",30]}]},"then":1,"else":0}}},very_hot_days_count:{$sum:{"$cond":{"if":{$gt:["$temp_max",30]},"then":1,"else":0}}}}}])