Database

[{"name":"parent-a","status":{"state":"good"},"children":["child-1","child-2"]},{"name":"child-1","state":"good","parent":"parent-a"},{"name":"child-2","state":{},"parent":"parent-a"},{"name":"parent-b","status":{"state":"good"},"children":["child-3","child-4"]},{"name":"child-3","state":"good","parent":"parent-b"},{"name":"child-4","state":"bad","parent":"parent-b"},{"name":"parent-c","status":{"state":"bad"},"children":["child-5","child-6"]},{"name":"child-5","state":"good","parent":"parent-c"},{"name":"child-6","state":"bad","parent":"parent-c"}]

Query

db.collection.aggregate([{$match:{"state":{$in:["bad",{}]}}},{$lookup:{from:"collection",localField:"parent",foreignField:"name",pipeline:[{$match:{"status.state":"good"}}],as:"hasGoodParent"}},{$match:{"hasGoodParent.0":{$exists:true}}},{$project:{name:1,state:1,_id:0}}])

Result