Database
db={"product":[{id:1,name:"A"}],"users":[{id:1,name:"ABC"}],"comment":[{id:1,product:1,user:1,parentComment:null,text:"Test"}],"rates":[{id:1,product:1,user:1,rate:5}]}
Query
db.comment.aggregate([{$match:{product:1,parentComment:null}},{$lookup:{from:"users",as:"user",localField:"user",foreignField:"id"}},{$unwind:"$user"},{$lookup:{from:"rates",let:{userId:"$user.id"},pipeline:[{$match:{product:1,$expr:{$eq:["$user","$$userId"]}}}],as:"rateValue"}}])