Laravel + elloquent + mongodb quero pegar a media de dados agrupado pelo created at em determinada hora

Galera seguinte, estou desenvolvendo uma aplicação onde temho varios sensores, recebo o json com humidade, temperatura e vpd.

Porem eu recebo de cada sensor em um intervalo de 15 em 15 segundos.

Quando eu vou pegar esses dados, de 1 semana pra plotar um grafico por exemplo, recebo muitos dados.

Eu gostaria de saber como eu faco pra pegar os dados 1 por hora e nos campos humidade, temperatura e VPD eu queria pegar média dentro dessa hora, ou seja, se em 1 hora eu tive 200 reqs, eu quero receber a media para que fique mais viavel de plotar esses dados.

Alguem ja fez isso?

Nunca trabalhei com Eloquent conectado em um mongoDB, mas em uma base SQL seria algo assim

$tempeatura_media = Tempeature::query()
                ->where('campo_timestamp_com_o_momento_do_registro', '>', Carbon::now()->subHours(3) ) //dados das ultimas 3 horas
                ->avg('campo_com_o_valor_da_temperatura');

Testa isso e dá um feedback.. se não funcionar a gente busca junto como fazer isso no Mongo.

Massa irmão pior que com SQL eu até consigo fazer a ossada mesmo está sendo fazer com mongoDB
aqui ele ensina com SQL, to querendo com MongoDB.
https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/