Database
db={"members":[{name:"Joe",hobby:"Food"},{name:"Lyn",hobby:"Food"},{name:"Rex",hobby:"Play"},{name:"Rex",hobby:"Shop"}]}
Query
db.members.aggregate([{$facet:{pipe1:[{$count:"count"}],pipe2:[{$skip:0},{$limit:4},{$lookup:{from:"members",let:{hobby:"$hobby"},pipeline:[{$match:{$expr:{$eq:["$hobby","$$hobby"]}}}],as:"fanClub"}}]}},{$unwind:"$pipe1"},{$project:{count:"$pipe1.count",results:{$map:{input:"$pipe2",as:"pipe2",in:{_id:"$$pipe2._id",hobby:"$$pipe2.hobby",name:"$$pipe2.name",fanClub:{$reduce:{input:"$$pipe2.fanClub",initialValue:[],in:{$concatArrays:["$$value",["$$this.name"]]}}}}}}}}])