Database

db={"vendors":[{"_id":{"$oid":"6229d3cfdbfc81a8777e4821"},"stats":[{"stats_ID":{"$oid":"62289ded8079821eb24760e0"},"New":false,"Expired":false},{"stats_ID":{"$oid":"6228a252fb4554dd5c48202a"},"New":false,"Expired":false},{"stats_ID":{"$oid":"622af1c391b290d34701af9f"},"New":false,"Expired":false}],"email":"man2996@gmail.com"}],"data":[{"_id":{"$oid":"62289ded8079821eb24760e0"},"Main_ID":"JB-456765","Expired":{"$date":"2022-03-15T18:30:00Z"}}]}

Query

db.vendors.aggregate([{/** match on email and some Expired is false*/"$match":{"email":"man2996@gmail.com","stats.Expired":false}},{/** lookup data with matching _id*/"$lookup":{"from":"data","localField":"stats.stats_ID","foreignField":"_id","as":"data"}},{"$set":{/** rebuild stats*/"stats":{"$map":{"input":"$stats","as":"stat","in":{/** is stats_ID somewhere in data?*/"$cond":[{"$in":["$$stat.stats_ID","$data._id"]},{/** Yes!*/"$mergeObjects":["$$stat",/** keep everything*/{"$cond":[/** check dates*/{"$gt":["$$NOW",{"$getField":{"field":"Expired","input":{"$first":{"$filter":{"input":"$data","as":"datum","cond":{"$eq":["$$stat.stats_ID","$$datum._id"]}}}}}}]},{/** data Expired > NOW*/"Expired":true},null/** data Expired <= NOW*/]}]},"$$stat"/** No data._id==stats_ID, so keep*/]}}}}},{/** don't need data anymore*/"$unset":["data"]},{/** update doc*/"$merge":{"into":"vendors",}}])

Result