Database
db={"projects":[{_id:1,type:"typeA",budget:{amount:123,currency:"USD"}}],"users":[{_id:1,name:"User name",bids:[{amount:123,currency:"USD"},{amount:342,currency:"INR"}]},{_id:2,name:"User name",bids:[{amount:123,currency:"ABC"},{amount:342,currency:"USD"}]}]}
Query
db.projects.aggregate([{$lookup:{from:"users",let:{budget:"$budget"},pipeline:[{$match:{$expr:{$or:[{$in:[{amount:"$$budget.amount",currency:"$$budget.currency"},"$bids"]},{$in:[{currency:"$$budget.currency",amount:"$$budget.amount"},"$bids"]}]}}}],as:"matchingBids"}}])