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"}},{"$addFields":{"pets":{"$filter":{"input":"$pets","as":"p","cond":{$ne:["$$p.state","DEAD"]}}}}},{"$addFields":{"petsCount":{"$size":"$pets"}}}])