Database
db={"category":[{_id:"5f886eb2d41da75dd5a90bfc",catName:"catName 1"},{_id:"5f886eb2d41da75dd5a90bfd",catName:"catName 2"}],"product":[{_id:"1f886eb2d41da75dd5a90bfd",productName:"productName 1",subcategory:"6f886eb2d41da75dd5a90bfc"},{_id:"2f886eb2d41da75dd5a90bfd",productName:"productName 2",subcategory:"6f886eb2d41da75dd5a90bfa"}],"subcategory":[{_id:"6f886eb2d41da75dd5a90bfc",subCatName:"subCatName 1",category:"5f886eb2d41da75dd5a90bfc"},{_id:"6f886eb2d41da75dd5a90bfd",subCatName:"subCatName 2",category:"5f886eb2d41da75dd5a90bfc"},{_id:"6f886eb2d41da75dd5a90bfa",subCatName:"subCatName 2",category:"5f886eb2d41da75dd5a90bfd"}]}
Query
db.category.aggregate([{$lookup:{from:"subcategory",let:{category:"$_id"},pipeline:[{$match:{$expr:{$eq:["$$category","$category"]}}},{$lookup:{from:"product",localField:"_id",foreignField:"subcategory",as:"products"}},{$project:{products:{$size:"$products"}}}],as:"products"}},{$project:{_id:0,name:"$catName",products:{$reduce:{input:"$products",initialValue:0,in:{$add:["$$value","$$this.products"]}}}}}])