Database

[{"pid":1,"type":"simple","variations":[]},{"pid":2,"type":"simple","variations":[]},{"pid":3,"type":"variable","variations":[{"vid":1,"instock":false},{"vid":2,"instock":true},{"vid":3,"instock":true}]},{"pid":4,"type":"variable","variations":[{"vid":1,"instock":false},{"vid":2,"instock":false}]},{"pid":5,"type":"variable","variations":[{"vid":1,"instock":true}]}]

Query

db.collection.aggregate([{$match:{"type":"variable","variations.instock":true}},{$group:{_id:null,total:{$sum:{$size:{$filter:{input:"$variations",cond:{$eq:["$$this.instock",true]}}}}}}}])

Result