Database

[{_id:1,reagents:[{_id:12,v_class:["TEST","PREMIUM"]},{_id:13,v_class:["COMMDTY","PREMIUM"]},{_id:14,v_class:["REAGENT","PREMIUM"]},{_id:15,v_class:["TEST"]},]},{_id:2,reagents:[{_id:12,v_class:["TEST","PREMIUM"]},{_id:234,v_class:["COMMDTY"]},{_id:233,v_class:["TEST"]},{_id:576,v_class:["REAGENT"]},]},{_id:3,reagents:[{_id:987,v_class:["TEST"]},{_id:678,v_class:["REAGENT"]},]},]

Query

db.collection.aggregate([{$match:{reagents:{$elemMatch:{_id:12}}}},{$group:{_id:{v_class:"$reagents.v_class",recipe_id:"$_id"},data:{$push:"$$ROOT"}}},{$unwind:"$_id.v_class"},{$match:{"_id.v_class":"PREMIUM"}},{$group:{_id:"$_id.recipe_id",count:{$sum:1,},data:{"$first":"$data"}}},{$match:{count:1}}])

Result