У меня есть коллекция с документами, как этиСортировка массива документов в агрегации MongoDB
{
"Day" : 1
"Name" : "Fred",
"Badges" : ["STAR", "FAST"]
}
{
"Day" : 2
"Name" : "Fred",
"Badges" : ["STAR", "NEWBIE", "SLOW"]
}
{
"Day" : 3
"Name" : "Fred",
"Badges" : ["STAR", "NEWBIE", "FAST"]
}
{
"Day" : 1
"Name" : "Frank",
"Badges" : ["STAR","GO"]
}
{
"Day" : 2
"Name" : "Frank",
"Badges" : ["STAR"]
}
Я агрегировать эти документы на весь месяц, чтобы вернуть статистику, как этот
{
Name : "Fred"
Badges : [{Name : "STAR", Count : 3},
{Name : "NEWBIE", Count : 2},
{Name : "FAST", Count : 2},
{Name : "SLOW", Count : 1}
]
}
а такой же предмет для Frank.
{
Name : "Fred"
Badges : [{Name : "STAR", Count : 2},
{Name : "GO", Count : 1}
]
}
У меня возникли проблемы с видом. Как я могу заказать значение значка STAR? Могу ли я изменить запрос агрегации для получения другого результата?
Я считаю, что структура, как это может быть хорошим решением, но я не понимаю, как получить его
{Name : "Fred"
STAR : 2
GO : 1}
Благодарности
Используйте команду $ unwind для итерации элементов массива «Значки». Затем вы можете сделать $ project для извлечения отсчетов по каждому значению значка, а затем отсортировать его в поле 'STAR'. – cubbuk