db.products.aggregate([ {$match : {"type": "Class"}}, {$unwind: "$courses"}, {$group: { _id : "$courses.id", "courses": {$push: "$courses"}, "count": {$sum : 1} }} ])