Database

db={"Owners":[{"_id":"o1","name":"owner1"},{"_id":"o2","name":"owner2"},{"_id":"o3","name":"owner3"}],"Pets":[{"_id":"p1","name":"pet1","state":"ALIVE","ownerId":"o1"},{"_id":"p2","name":"pet2","state":"ALIVE","ownerId":"o1"},{"_id":"p3","name":"pet3","state":"ALIVE","ownerId":"o2"},{"_id":"p4","name":"pet4","state":"DEAD","ownerId":"o2"},{"_id":"p5","name":"pet5","state":"DEAD","ownerId":"o3"}]}

Query

db.Owners.aggregate([{"$match":{_id:{$in:["o1","o2","o3"]}}},{"$lookup":{"from":"Pets","localField":"_id","foreignField":"ownerId","as":"pets"}},{"$project":{name:1,pets:1,petsCount:{"$reduce":{"input":"$pets","initialValue":0,"in":{"$add":["$$value",{"$cond":{"if":{$ne:["$$this.state","DEAD"]},"then":1,"else":0}}]}}}}}])

Result