Данные моего примера выглядят так:
Category response
Privacy 1
Mobile 1
Privacy 1
Privacy 0
Phishing 1
Mobile 1
Desktop 1
Desktop 0
Security 1
Я создал агрегированный запрос к group
all categories
и получаю счет, как показано ниже:
db.cmi5DashboardData.aggregate([
{$group:{_id:'$category',knt:{$sum:'$response'}}},
{$sort:{knt:-1}},
{$project:{_id:0,category:'$_id',count:'$knt'}}
])
Я получаю вывод, как показано ниже:
Category count
Privacy 2
Mobile 2
Phishing 1
Desktop 1
Security 1
Однако мне нужно group
эти данные перейти на следующий уровень, чтобы получить вывод, как показано ниже:
Category count
Privacy 2
Mobile 2
Others 3
Здесь первые две категории (с большим числом, то есть Privacy & Mobile) считаются сильными, а все остальные категории считаются слабыми и называются другими . Others
должен рассчитываться динамически, что является суммой всех других точек данных, кроме точных данных.
Какие-либо предложения или указатели на это могут быть полезны?
Примечание: я использую mongodb 3.6
Обновление: образцы JSON
{Category:'Phishing', response:1),
{Category:'Security', response:1),
{Category:'Privacy', response:1),
{Category:'Privacy', response:1),
{Category:'Privacy', response:0),
{Category:'Mobile', response:1),
{Category:'Mobile', response:1),
{Category:'Desktop', response:1),
{Category:'Desktop', response:0),