Database

[{"employeeUserName":"mat@gmail.com","started_at":ISODate("2021-04-20T09:12:00.000Z"),"totalHr":20},{"employeeUserName":"mat@gmail.com","started_at":ISODate("2021-04-21T09:12:00.000Z"),"totalHr":10},{"employeeUserName":"mat@gmail.com","started_at":ISODate("2021-04-22T09:12:00.000Z"),"totalHr":1},{"employeeUserName":"mat@gmail.com","started_at":ISODate("2021-05-20T09:12:00.000Z"),"totalHr":68.16666666666666},{"employeeUserName":"mat@gmail.com","started_at":ISODate("2021-05-21T09:12:00.000Z"),"totalHr":26.816666666666666}]

Query

db.collection.aggregate([{$group:{_id:{employee:"$employeeUserName",year:{$year:"$started_at"},month:{$month:"$started_at"},day:{$dayOfMonth:"$started_at"}},totalHrPerDay:{$sum:"$totalHr"}}},{$group:{_id:{employee:"$_id.employee",year:"$_id.year",month:"$_id.month"},totalforMonth:{$sum:"$totalHrPerDay"},days:{$push:"$$ROOT"}}},{$group:{_id:"$_id.employee",data:{$push:"$$ROOT"}}},{$project:{_id:0,employee:"$_id",months:{$map:{input:"$data",as:"month",in:{number:"$$month._id.month",totalforMonth:"$$month.totalforMonth",days:{$map:{input:"$$month.days",as:"day",in:{day:"$$day._id.day",totalHr:"$$day.totalHrPerDay"}}}}}}}}])

Result