Database
[{"owner":"anna","letters":["c"]},{"owner":"bob","letters":["b","c"]},{"owner":"cai","letters":["a","b"]},{"owner":"dora","letters":["a","d"]},{"owner":"emil","letters":["a"]},{"owner":"fry","letters":["b"]},]
Query
db.collection.aggregate([{"$lookup":{"from":"collection","let":{l:"$letters"},"pipeline":[{"$match":{$expr:{$eq:[{"$setIntersection":["$$l","$letters"]},[]]}}},{"$match":{$expr:{"$setIsSubset":[["a","b"],{"$setUnion":["$$l","$letters"]}]}}},{/** optional for performance boost*/$limit:10}],"as":"candidates"}},{$unwind:"$candidates"},{$sample:{size:1}}])