Database
db={"orders":[{id:"123456789",items:[{name:"aaa",externalCode:"123",quantity:1,options:[{name:"ccc",externalCode:"999",quantity:2,}],},{name:"bbb",externalCode:"456",quantity:2,options:[{name:"aaa",externalCode:"123",quantity:5}]},{name:"ddd",externalCode:"789",quantity:2,options:[]}]}],"stocks":[{merchantIds:["abc"],products:[{code:"123",quantity:10},{code:"456",quantity:15},{code:"999",quantity:99}]}]}
Query
db.orders.aggregate([{"$match":{id:"123456789"}},{"$project":{items:{"$map":{"input":"$items","as":"i","in":{name:"$$i.name",externalCode:"$$i.externalCode"}}},options:{"$reduce":{"input":"$items","initialValue":[],"in":{"$concatArrays":["$$value",{"$reduce":{"input":"$$this.options","initialValue":[],"in":{"$concatArrays":["$$value",[{name:"$$this.name",externalCode:"$$this.externalCode"}]]}}}]}}}}},{"$project":{union:{"$setUnion":["$items","$options"]}}},{"$unwind":"$union"},{"$lookup":{"from":"stocks",let:{extCode:"$union.externalCode"},pipeline:[{$match:{merchantIds:"abc"}},{"$match":{$expr:{"$in":["$$extCode","$products.code"]}}}],"as":"lookupResult"}},{"$unwind":"$lookupResult"},{$project:{externalCode:"$union.externalCode",name:"$union.name"}}])