¿Qué marco estás usando? Este no es el shell de MongoDB y parece un envoltorio extraño alrededor de MapReduce. En ese caso, $unwind no estaría disponible y lo necesita para el usuario en el marco de agregación. Esto es lo que quieres en el shell de 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 } }
])
Tan eficientemente:
- Filtrar por fecha porque ya configuró una var para los últimos 7 días
- Proyecte solo los campos que necesitamos { ¡Solo necesitamos uno! }
- Desenrolle la matriz para que ahora tengamos un registro para cada elemento de la matriz en cada documento
- Grupo sobre el Artista de los documentos ampliados
- Proyecta en un formato de documento que puedes usar como grupo jugando con _id
- Ordene los resultados en orden inverso para ver los primeros etiquetados primero
Y lo mejor de la agregación es que puede construir gradualmente esas etapas para ver qué está pasando.
Agite y hornee en su propia implementación de controlador o marco ODM según sea necesario.