Database

[{"type":"Type 1","status":"Y","code":"1","category":[{"type":"Cat 1","status":"Y","code":"1000","subcategories":[{"type":"Sub 1","status":"N","code":"1001"},{"type":"Sub 2","status":"N","code":"1002"},{"type":"Sub 3","status":"Y","code":"1003"}]},{"type":"Cat 2","status":"N","code":"2000","subcategories":[{"type":"Sub 4","status":"Y","code":"2001"},{"type":"Sub 5","status":"Y","code":"2002"}]}]}]

Query

db.collection.aggregate([{$match:{status:"Y"}},{$unwind:"$category"},{$match:{"category.status":"Y"}},{$project:{"type":1,status:1,code:1,"category.type":"$category.type","category.status":"$category.status","category.code":"$category.code","category.subcategories":{$filter:{input:"$category.subcategories",as:"subcategory",cond:{$eq:["$$subcategory.status","Y"]}}}}},{$group:{_id:"$_id",type:{$first:"$type"},status:{$first:"$status"},code:{$first:"$code"},category:{$push:"$category"}}}])

Result