Database

db={users:[{_id:"abc",name:"abc",group:1,location:{type:"Point",coordinates:[54.23,67.12]},calculatedDist:13},{_id:"xyz",name:"xyyy",group:1,location:{type:"Point",coordinates:[54.23,67.12]},calculatedDist:11},{_id:"123",name:"yyy",group:1,location:{type:"Point",coordinates:[54.23,67.12]},calculatedDist:2},{_id:"rrr",name:"tttt",group:1,location:{type:"Point",coordinates:[54.23,67.12]},calculatedDist:11},{_id:"eee",name:"uuu",group:1,location:{type:"Point",coordinates:[54.23,67.12]},calculatedDist:7},],partnership:[{_id:"abc_123",fromUser:"abc",toUser:"123"},{_id:"eee_rrr",fromUser:"eee",toUser:"rrr"},{_id:"rrr_abc",fromUser:"rrr",toUser:"abc"},{_id:"abc_rrr",fromUser:"abc",toUser:"rrr"},{_id:"xyz_rrr",fromUser:"xyz",toUser:"rrr"},{_id:"rrr_eee",fromUser:"rrr",toUser:"eee"},]}

Query

db.partnership.aggregate([/** $geoNear*/{$match:{$or:[{fromUser:"rrr"},{toUser:"rrr"}]}},{$group:{_id:0,from:{$addToSet:"$fromUser"},to:{$addToSet:"$toUser"}}},{$project:{_id:0,users:{$filter:{input:{$setIntersection:["$from","$to"]},cond:{$ne:["$$this","rrr"]}}}}},{$lookup:{from:"users",let:{userId:"$users"},pipeline:[{$sort:{calculatedDist:1}},{"$match":{"$expr":{"$in":["$_id","$$userId"]}}}],as:"users"}},{$project:{users:1,count:{$size:"$users"}}}])

Result