Você pode usar o pipeline de agregação abaixo.
A consulta abaixo irá
$unwind
o tag_id
seguido por $group
para contar email
e $cond
operador para contar os unread
o email. db.collection.aggregate(
{$unwind:{path:"$tag_id", preserveNullAndEmptyArrays:true}},
{$group:{
_id:"$tag_id",
count_email:{$sum:1},
unread:{$sum:{$cond:[{$eq:["$unread", "false"]}, 0, 1]}}
}
}
);