Database

db={"trees":[{_id:1,company_id:1,company_name:"A"},{_id:2,company_id:1,company_name:"A"}],"links":[{_id:1,company_id:1,url:"a"},{_id:2,company_id:2,url:"b"}],"analytics":[{_id:1,tree_id:1,views:10,date:new Date()},{_id:2,link_id:1,clicks:10,date:new Date()},{_id:3,link_id:2,clicks:10,date:new Date()}]}

Query

db.analytics.aggregate([{$lookup:{from:"trees",as:"trees",localField:"tree_id",foreignField:"_id"}},{$lookup:{from:"links",as:"links",localField:"link_id",foreignField:"_id"}},{$addFields:{company:{$arrayElemAt:[{$cond:[{$ne:["$trees.company_id",[]]},"$trees","$links"]},0]}}},{$group:{_id:"$company.company_id",company_name:{$first:"$company.company_name"},views_count:{$sum:"$views"},clicks_count:{$sum:"$clicks"}}}])

Result