Database
db={"CollectionA":[{name:"first",mainId:"a2345e87-a388-4b72-ae2a-1cd69b7e1330",vid:123},{name:"second",mainId:"b2345e87-a388-4b72-ae2a-1cd69b7e1330",vid:456},{name:"third",mainId:"c2345e87-a388-4b72-ae2a-1cd69b7e1330",vid:789}],"CollectionB":[{name:"first",mainId:"a2345e87-a388-4b72-ae2a-1cd69b7e1330",vid:123},{name:"third",mainId:"c2345e87-a388-4b72-ae2a-1cd69b7e1330",vid:789}]}
Query
db.CollectionA.aggregate([{$lookup:{from:"CollectionB",let:{mainIdField:"$mainId",vidField:"$vid"},pipeline:[{$match:{$expr:{$and:[{$eq:["$mainId","$$mainIdField"]},{$eq:["$vid","$$vidField"]}]}}}],as:"joined_results"}},{$unwind:{path:"$joined_results"}}])