Database
db={"reviews":[{lawyerId:1,userId:1,message:"I dont like it",rate:2,createdAt:"Some Review Date",},{lawyerId:2,userId:2,message:"That's nice",rate:5,createdAt:"Some Review Date",}],"accounts":[{_id:1,email:"jackharden@example.com",firstName:"Jack",lastName:"Harden",createdAt:"Some registration date",},{_id:2,email:"takeshisan@example.com",firstName:"Takeshi",lastName:"San",createdAt:"Some registration date",}]}
Query
db.reviews.aggregate([{$lookup:{from:"accounts",localField:"userId",foreignField:"_id",as:"user"}},{$unwind:"$user"},{$addFields:{"firstName":"$user.firstName","lastName":"$user.lastName"}},{$group:{"_id":null,"average_rate":{$avg:"$rate"},"reviews":{$push:"$$ROOT"}}},{$unset:["_id","reviews._id","reviews.user","reviews.userId","reviews.lawyerId"]}])