Как я могу посчитать больше значений за раз?Моя коллекция выглядит следующим образом, и я хочу посчитать поля msg
и severity
[
{
"msg": "A",
"severity": "hello1",
"group": "bb"
},
{
"msg": "B",
"severity": "hello1",
"group": "bb"
},
{
"msg": "A",
"severity": "hello2",
"group": "bb"
},
{
"msg": "C",
"severity": "hello2",
"group": "bb"
}
]
Результат, который я хочу получить, выглядит примерно так:
[
[{
"_id" : "A",
"count" : 2.0
},
{
"_id" : "B",
"count" : 1.0
},
{
"_id" : "C",
"count" : 1.0
}],
[{
"_id" : "hello1",
"count" : 2.0
},
{
"_id" : "hello2",
"count" : 2.0
}],
]
Икод, который я пробовал:
db.getCollection('events').aggregate({
$and: [
{
[
{ $unwind: "$msg" },
{
$group: {
_id: {$toLower: '$msg'},
count: { $sum: 1 }
}
}
]
},
{
[
{ $unwind: "$severity" },
{
$group: {
_id: {$toLower: '$severity'},
count: { $sum: 1 },
}
}
]
}]
}).toArray();
Но я получаю эту ошибку:
Ошибка: строка 5: неожиданный токен,
Thisкод начался с:
db.getCollection('events').aggregate([
{ $unwind: "$msg" },
{
$group: {
_id: {$toLower: '$msg'},
count: { $sum: 1 }
}
}
]).toArray();
И он работает правильно (только для поля msg
);Я только что попытался объединить 2 $unwind
и 2 $group
Вот фрагмент
Спасибо за ваше время!