Database

[{"history":[{"type":"temp","value":10},{"type":"moisture","value":32.2}],"at":ISODate("2021-04-06T00:01:02.023Z")},{"history":[{"type":"temp","value":13},{"type":"moisture","value":31.6}],"at":ISODate("2021-04-06T00:04:11.211Z")},{"history":[{"type":"temp","value":15},{"type":"moisture","value":29.4}],"at":ISODate("2021-04-06T09:11:31.182Z")},{"history":[{"type":"temp","value":15},{"type":"moisture","value":27.3}],"at":ISODate("2021-04-07T01:33:31.723Z")},{"history":[{"type":"temp","value":16},{"type":"moisture","value":28.1}],"at":ISODate("2021-04-15T09:32:44.983Z")},{"history":[{"type":"temp","value":18},{"type":"moisture","value":28.2}],"at":ISODate("2021-04-16T10:43:22.083Z")},{"history":[{"type":"temp","value":19},{"type":"moisture","value":26.9}],"at":ISODate("2021-04-16T14:43:22.083Z")},{"history":[{"type":"temp","value":24},{"type":"moisture","value":31.2}],"at":ISODate("2021-04-17T04:25:12.021Z")},{"history":[{"type":"temp","value":23},{"type":"moisture","value":28.7}],"at":ISODate("2021-04-18T20:13:22.083Z")},{"history":[{"type":"temp","value":23},{"type":"moisture","value":33.0}],"at":ISODate("2021-04-19T18:41:22.083Z")}]

Query

db.collection.aggregate([{$unwind:"$history"},{$group:{_id:{"at":{$week:{date:"$at",timezone:"-05:00"}},"type":"$history.type"},minDate:{$min:"$at",},averageValue:{$avg:"$history.value",},minimumValue:{$min:"$history.value",},maximumValue:{$max:"$history.value",}}},{"$project":{"_id":"$_id.at","type":"$_id.type","averageValue":"$averageValue","minimumValue":"$minimumValue","maximumValue":"$maximumValue","weekStart":{$dateToString:{format:"%Y-%m-%d",date:{/** convert date*/$subtract:["$minDate",{$multiply:[{$subtract:[{$isoDayOfWeek:"$minDate"},1]},86400000]}]}}},"weekEnd":{$dateToString:{format:"%Y-%m-%d",date:{/** convert date*/$subtract:["$minDate",{$multiply:[{$subtract:[{$isoDayOfWeek:"$minDate"},7]},86400000]}]}}}}}])

Result