Database

db={"tenant":[{id:1,name:"T1",type:"DEFAULT",state:"ACTIVE"},{id:2,name:"T2",type:"DEFAULT",state:"DISABLED"},{id:3,name:"T3",type:"STANDARD",state:"ACTIVE"},{id:4,name:"T4",type:"TRIAL",state:"DELETED"},{id:5,name:"T5",type:"DEFAULT",state:"DISABLED"}],"options":[{id:1,tenantId:1,opt:"OPERATING"},{id:2,tenantId:2,opt:"OPERATING"},{id:3,tenantId:3,opt:"POSTPONED"},{id:4,tenantId:4,opt:"DELETED"},{id:5,tenantId:5,opt:"POSTPONED"}]}

Query

db.tenant.aggregate([{$match:{state:{$ne:"DELETED"}}},{$group:{_id:"$type",ids:{$push:"$id"}}},{"$lookup":{"from":"options","let":{ids:"$ids"},"pipeline":[{$match:{opt:{$ne:"DELETED"},$expr:{$in:["$tenantId","$$ids"]}}},{$group:{_id:"$opt",count:{$sum:1}}},{$project:{_id:0,k:"$_id",v:"$count"}}],"as":"opts"}},{$project:{_id:0,type:"$_id",opts:{$arrayToObject:"$opts"}}}])

Result