Qual estrutura você está usando? Este não é o shell do MongoDB e parece um wrapper estranho em torno do MapReduce. Nesse caso, $unwind não estaria disponível e você precisa dele para o usuário na estrutura de agregação. Aqui está o que você quer no shell do mongo:
db.articles.aggregate([
{$match: { class_date: { $gte: date } } },
{$project: { _id: 0, class_artist: 1 } },
{$unwind: "$class_artist" },
{$group: { _id: "$class_artist", tags: { $sum: 1 } }},
{$project: { _id: 0,class_artist: "$_id", tags: 1 } },
{$sort: { tags: -1 } }
])
Tão eficientemente:
- Filtrar por data porque você já definiu um var nos últimos sete dias
- Projete apenas o(s) campo(s) de que precisamos { Precisamos de apenas um! }
- Desenrole o array para que agora tenhamos um registro para cada elemento do array em cada documento
- Grupo no Artista dos documentos expandidos
- Projete em um formato de documento que você pode usar como grupo que mexeu com _id
- Ordene os resultados na ordem inversa para ver os primeiros marcados primeiro
E o melhor da agregação é que você pode construir gradualmente esses estágios para ver o que está acontecendo.
Agite e asse em sua própria implementação de driver ou estrutura ODM, conforme necessário.