Database

[{stationId:"xxxxx",stationName:"xxxx",state:"xxxx",lat:"xxxxx",long:"xx.xxxxx",waterLevel:[{wlDateTime:"11/04/2022 11:30",wlSeverity:"Danger",wlLevel:7.5},{wlDateTime:"11/04/2022 09:00",wlSeverity:"Danger",wlLevel:7.3},{wlDateTime:"11/04/2022 03:00",wlSeverity:"Normal",wlLevel:5.2}],rainfallData:[{rfDateTime:"11/04/2022 11:30",rfSeverity:"Heavy",rfLevel:21},{rfDateTime:"11/04/2022 10:30",rfSeverity:"Heavy",rfLevel:21},{rfDateTime:"11/04/2022 9:30",rfSeverity:"Heavy",rfLevel:21}]}]

Query

db.collection.aggregate([{$match:{}},{$set:{waterLevel:{$map:{input:"$waterLevel",as:"w",in:{$mergeObjects:["$$w",{wlDateTime:{$toDate:"$$w.wlDateTime"}}]}}},rainfallData:{$map:{input:"$rainfallData",as:"r",in:{$mergeObjects:["$$r",{rfDateTime:{$toDate:"$$r.rfDateTime"}}]}}}}},{$set:{waterLevel:{$filter:{input:"$waterLevel",as:"w",cond:{$and:[{$eq:["$$w.wlSeverity","Danger"]},{$eq:["$$w.wlDateTime",{$max:"$waterLevel.wlDateTime"}]}]}}},rainfallData:{$filter:{input:"$rainfallData",as:"r",cond:{$eq:["$$r.rfDateTime",{$max:"$rainfallData.rfDateTime"}]}}}}}])

Result