Database

[{"cat_id":1,"categoryCode":"categoryCode1","categoryName":"categoryName1","cat":[{"type":"A","description":"descriptionA"}]},{"cat_id":2,"categoryCode":"categoryCode1","categoryName":"categoryName1","cat":[{"type":"A","description":"descriptionA"}]},{"cat_id":3,"categoryCode":"categoryCode2","categoryName":"categoryName2","cat":[{"type":"C","description":"descriptionC"}]},{"cat_id":4,"categoryCode":"categoryCode3","categoryName":"categoryName3","cat":[{"type":"A","description":"descriptionA"}]}]

Query

db.collection.aggregate([{"$group":{"_id":{"categoryCode":"$categoryCode","categoryName":"$categoryName"},"catCount":{"$sum":{"$reduce":{"input":"$cat","initialValue":0,"in":{"$cond":{"if":{$and:[{$eq:["$$this.type","A"]},{$eq:["$$this.description","descriptionA"]}]},"then":{$add:["$$value",1]},"else":"$$value"}}}}}}},{"$project":{"categoryCode":"$_id.categoryCode","categoryName":"$_id.categoryName","catCount":1,"_id":0}}])

Result