Database

db={"Entity":[{_id:1,name:"A"},{_id:2,name:"B"}],"Review":[{rating:2,comment:"Demo",public:true,entityId:1},{rating:2,comment:"Demo",public:true,entityId:1},{rating:3,comment:"Demo",public:true,entityId:2},{rating:4,comment:"Demo",public:true,entityId:2}]}

Query

db.Entity.aggregate([{$lookup:{from:"Review",localField:"_id",foreignField:"entityId",as:"avgRating"}},{$addFields:{noOfReviews:{$size:"$avgRating"},avgRating:{$avg:{$map:{input:"$avgRating",in:"$$this.rating"}}}}},{$project:{admin:0,createdAt:0,updatedAt:0}}])

Result