Database
[{_id:1,Extras:[{Name:"NO",QuotationHistory:[]},{Name:"NO",QuotationHistory:null},{Name:"NO",NOQuotationHistory:true},{Name:"OK",QuotationHistory:[{Date:"2023-01-01",Items:[{Name:"ERROR",Price:90}]},{Date:"2023-01-02",Items:[{Name:"LAST 200",Price:200}]}]}]},{_id:2,Extras:[{Name:"OK",QuotationHistory:[{Date:"2023-01-01",Items:[{Name:"ERROR",Price:90}]},{Date:"2023-01-02",Items:[{Name:"LAST 100",Price:100}]}]},{Name:"OK",QuotationHistory:[{Date:"2023-01-01",Items:[{Name:"Item 100",Price:100}]},{Date:"2023-01-02",Items:[{Name:"LAST 300",Price:300}]}]}]},{_id:4,Extras:[{Name:"OK",QuotationHistory:[{Date:"2023-01-01",Items:[{Name:"Item 1",Price:90}]},{Date:"2023-01-02",Items:[{Name:"LAST 500",Price:500}]}]}]},{_id:5,Extras:[{Name:"NO",QuotationHistory:[]}]},{_id:6,Extras:[]},{_id:7,WithNoExtrasProp:true}]
Query
db.collection.aggregate([{$set:{Extras:{"$filter":{"input":"$Extras","as":"ex","cond":{$gt:[{$size:{$ifNull:["$$ex.QuotationHistory",[]]}},0]}}}}},{$match:{$expr:{$gt:[{$size:{$ifNull:["$Extras",[]]}},0]}}},{$set:{Extras:{"$map":{"input":"$Extras","as":"ex","in":{"$mergeObjects":["$$ex",{QuotationHistory:{$last:"$$ex.QuotationHistory"}}]}}}}}])