Database

db={users:[{_id:ObjectId("5a934e000102030405000001"),username:"john",friends:["5a934e000102030405000002","5a934e000102030405000003"]},{_id:ObjectId("5a934e000102030405000002"),username:"lucy",friends:["5a934e000102030405000001"]},{_id:ObjectId("5a934e000102030405000003"),username:"earl",friends:["5a934e000102030405000001"]}],servers:[{_id:"s101",ownder:"john",name:"name",channels:[{_id:"c101",with:"5a934e000102030405000002"},{_id:"c102",with:"5a934e000102030405000003"},]}]}

Query

db.servers.aggregate([{$match:{_id:"s101"}},{$project:{channels:1,_id:0}},{$unwind:"$channels"},{$lookup:{from:"users",let:{"friend_id":"$channels.with"},pipeline:[{$match:{$expr:{$eq:[{$toString:"$_id"},"$$friend_id"]}}}],as:"friend"}},{$replaceRoot:{newRoot:{"$mergeObjects":[{channel:"$channels._id"},{$first:"$friend"}]}}}])

Result