Ответ 1
Какие рамки вы используете? Это не оболочка MongoDB и выглядит как какая-то странная оболочка вокруг MapReduce. В этом случае $unwind будет недоступен, и вам понадобится его для пользователя в структуре агрегации. Вот что вы хотите в оболочке 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 } }
])
Так эффективно:
- Фильтровать по дате, потому что вы уже установили var за последние 7 дней.
- Project только поля, которые нам нужны {Нам нужен только один! }
- Unwind массив, поэтому теперь у нас есть запись для каждого элемента массива в каждом документе
- Group для художника из расширенных документов
- Проект в формате документа, который вы можете использовать в качестве группы, запутанной с помощью _id
- Sort результаты в обратном порядке, чтобы увидеть верхний отмеченный первый
И великая вещь об агрегировании - вы можете постепенно наращивать эти этапы, чтобы увидеть, что происходит.
Встряхните и запекайте в своей собственной имплантации или в инфраструктуре ODM по мере необходимости.