Database
[{stationId:"xxxxx",stationName:"xxxx",state:"xxxx",lat:"xxxxx",long:"xx.xxxxx",waterLevel:[{wlDateTime:"12/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:{$expr:{$or:[{$ne:[{$filter:{input:"$waterLevel",as:"w",cond:{$eq:[{$dateTrunc:{date:{$dateFromString:{dateString:"$$w.wlDateTime",format:"%d/%m/%Y %H:%M"}},unit:"day"}},{$dateTrunc:{date:"$$NOW",unit:"day"}}]}}},[]]},{$ne:[{$filter:{input:"$rainfallData",as:"r",cond:{$eq:[{$dateTrunc:{date:{$dateFromString:{dateString:"$$r.rfDateTime",format:"%d/%m/%Y %H:%M"}},unit:"day"}},{$dateTrunc:{date:"$$NOW",unit:"day"}}]}}},[]]}]}}},{$set:{waterLevel:{$map:{input:"$waterLevel",as:"w",in:{$mergeObjects:["$$w",{wlDateTime:{$dateFromString:{dateString:"$$w.wlDateTime",format:"%d/%m/%Y %H:%M"}}}]}}},rainfallData:{$map:{input:"$rainfallData",as:"r",in:{$mergeObjects:["$$r",{rfDateTime:{$dateFromString:{dateString:"$$r.rfDateTime",format:"%d/%m/%Y %H:%M"}}}]}}}}},{$set:{waterLevel:{$filter:{input:"$waterLevel",as:"w",cond:{$and:[{$in:["$$w.wlSeverity",["Alert","Warning","Danger"]]},{$eq:["$$w.wlDateTime",{$max:"$waterLevel.wlDateTime"}]},{$eq:[{$dateTrunc:{date:"$$w.wlDateTime",unit:"day"}},{$dateTrunc:{date:"$$NOW",unit:"day"}}]}]}}},rainfallData:{$filter:{input:"$rainfallData",as:"r",cond:{$and:[{$eq:["$$r.rfDateTime",{$max:"$rainfallData.rfDateTime"}]},{$eq:[{$dateTrunc:{date:"$$r.rfDateTime",unit:"day"}},{$dateTrunc:{date:"$$NOW",unit:"day"}}]}]}}}}}])