Database
db={users:[{_id:"abc",name:"abc",group:1},{_id:"xyz",name:"xyyy",group:3},{_id:"123",name:"yyy",group:1},{_id:"rrr",name:"tttt",group:1},{_id:"eee",name:"uuu",group:1}],partnership:[{_id:"abc_123",fromUser:"abc",toUser:"123"}]}
Query
db.users.aggregate([{$match:{group:1,_id:{$ne:"abc"}}},{$lookup:{from:"partnership",let:{userId:"$_id"},as:"prob",pipeline:[{$set:{users:["$fromUser","$toUser"],u:"$$userId"}},{$match:{$expr:{$and:[{$in:["$$userId","$users"]},{$in:["abc","$users"]}]}}}]}},{$match:{"prob.0":{$exists:false}}},{$set:{prob:{$rand:{}}}},{$sort:{prob:1}},{$limit:1},{$unset:"prob"}])