Database

db={"rooms":[{_id:"1",players:["10","20","30"]},{_id:"2",players:["40","50"]}],"players":[{_id:"10",user:"100"},{_id:"20",user:"200"},{_id:"30",user:"300"},{_id:"40",user:"400"},{_id:"50",user:"500"}],"users":[{_id:"100",username:"user1"},{_id:"200",username:"user2"},{_id:"300",username:"user3"},{_id:"400",username:"user4"},{_id:"500",username:"user5"}]}

Query

db.rooms.aggregate([{$match:{_id:"1"}},{$lookup:{from:"players",localField:"players",foreignField:"_id",as:"players"}},{$unwind:"$players"},{$match:{"players.user":"100"}},{$lookup:{from:"users",localField:"players.user",foreignField:"_id",as:"user"}}])

Result