Jaký framework používáte? Toto není shell MongoDB a vypadá to jako nějaký divný obal kolem MapReduce. V takovém případě by $unwind nebyl dostupný a potřebujete jej pro uživatele v agregačním rámci. Zde je to, co chcete v mongo shell:
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 } }
])
Tak efektivně:
- Filtrujte podle data, protože jste již nastavili proměnnou za posledních 7 dní
- Projektujte pouze pole, která potřebujeme { Potřebujeme pouze jedno! }
- Rozviňte pole, takže nyní máme záznam pro každý prvek pole v každém dokumentu
- Seskupit umělce z rozbalených dokumentů
- Projektujte do formátu dokumentu, který můžete použít jako skupina s _id
- Seřaďte výsledky v opačném pořadí, aby se jako první zobrazily značky nahoře
A skvělá věc na agregaci je, že můžete postupně budovat tyto fáze, abyste viděli, co se děje.
Podle potřeby protřepejte a zapékejte do své vlastní implementace ovladače nebo rámce ODM.