Database

[{transports:[{_id:"123",events:[{category:"Payment",event:"ok",date:"2023-02-21T16:32:07.740Z"},{category:"Temperatures",event:"technicalFailure",date:"2023-02-21T16:36:07.740Z"},{category:"Payment",event:"failed",date:"2023-02-21T16:55:07.740Z"}]}]},{transports:[{_id:"456",events:[{category:"Payment",event:"ok",date:"2023-02-21T16:28:07.740Z"},{category:"Temperatures",event:"auto",date:"2023-02-21T16:29:07.740Z"},{category:"Payment",event:"failed",date:"2023-02-21T17:01:07.740Z"}]}]},{transports:[{_id:"127",events:[{category:"Payment",event:"ok",date:"2023-02-21T16:29:07.740Z"},{category:"Temperatures",event:"auto",date:"2023-02-21T17:18:07.740Z"},{category:"Temperatures",event:"technicalFailure",date:"2023-02-21T18:53:07.740Z"}]}]}]

Query

db.collection.aggregate([{/** eleminate docs without possibility of match*/"$match":{"transports.events":{"$elemMatch":{"category":"Temperatures","event":"technicalFailure"}}}},{/** check final condition of remaining docs*/"$match":{"$expr":{"$reduce":{"input":"$transports","initialValue":false,"in":{"$let":{"vars":{/** set the last "Temperatures" event*/"lastEvent":{"$last":{"$filter":{"input":"$$this.events","as":"event","cond":{"$eq":["$$event.category","Temperatures"]}}}}},"in":{"$or":["$$value",{"$eq":["$$lastEvent.event","technicalFailure"]}]}}}}}}}])

Result