Database
db={"friends":[{RequesterId:2,ReceiverId:3,Status:1},{RequesterId:4,ReceiverId:2,Status:1},{RequesterId:3,ReceiverId:4,Status:1}],"users":[{ActorId:1,Name:"MSPRetro",Progression:{Money:500,Fame:100,Fortune:1000},Extra:{IsExtra:0},Room:{RoomActorLikes:[2,3,4]}},{ActorId:2,Name:"Admin",Progression:{Money:800,Fame:200,Fortune:1500},Extra:{IsExtra:0},Room:{RoomActorLikes:[1,3]}},{ActorId:3,Name:"CoAdmin",Progression:{Money:1000,Fame:300,Fortune:2000},Extra:{IsExtra:0},Room:{RoomActorLikes:[1,2]}},{ActorId:4,Name:"Sarah",Progression:{Money:1200,Fame:200,Fortune:2500},Extra:{IsExtra:0},Room:{RoomActorLikes:[1]}}]}
Query
db.friends.aggregate([{"$match":{"$or":[{"RequesterId":2},{"ReceiverId":2}],"Status":1}},{"$lookup":{"from":"users","let":{"actorId":{"$cond":[{"$eq":["$RequesterId",2]},"$ReceiverId","$RequesterId"]}},"pipeline":[{"$match":{"$expr":{"$or":[{"$eq":["$$actorId","$ActorId"]}]}}}],"as":"friends"}},{"$unwind":"$friends"},{"$replaceRoot":{"newRoot":"$friends"}},{"$unionWith":{coll:"users","pipeline":[{"$match":{"ActorId":2}}]}},{"$match":{"ActorId":{"$ne":1},"Extra.IsExtra":0}},{"$sort":{"Fame":-1}},{"$skip":0},{"$limit":7},{"$project":{"_id":0,"ActorId":"$ActorId","Name":"$Name","Money":"$Progression.Money","Fame":"$Progression.Fame","Fortune":"$Progression.Fortune","IsExtra":"$Extra.IsExtra","RoomLikes":{"$size":"$Room.RoomActorLikes"}}}])