Database

db={comments:[{commentedBy:"userfooid"}],users:[{_id:"userfooid"}],posts:[{posterId:"userfooid"}]}

Query

db.comments.aggregate([{$lookup:{from:"users",let:{userId:"$commentedBy"},as:"commenterDetails",pipeline:[{$match:{$expr:{$eq:["$$userId","$_id"],}}},{$lookup:{from:"posts",as:"posts",let:{posterId:"$_id"},pipeline:[{$match:{$expr:{$eq:["$posterId","$$posterId"]}}},{$count:"total"},]}},{$addFields:{posts:{$arrayElemAt:["$posts",0]}}},]},},{$addFields:{commenterDetails:{$arrayElemAt:["$commenterDetails",0]}}}])

Result