Si j'ai bien compris, vous êtes si proche, vérifiez cette requête :
- Utilisez d'abord
$match
pour obtenir uniquement les documents dontsubLevel.id
est 1 ou 2. - Ensuite, comme vous l'avez fait,
$group
par l'id
et somme pour obtenir le nombre total :
db.collection.aggregate([
{
"$match": { "subLevel.id": { "$in": [ 1, 2 ] } }
},
{
"$group": { "_id": "$subLevel.id", "count": { "$sum": 1 } }
}
])
Exemple ici