У меня есть данные в коллекции mon go в следующем формате:
{
"response":[
{
"_responsedata":{
"Error":{
"message":"BMERROR001 - Something went wrong. Please check the error logs",
"statusCode":"400",
"reasonCode":"BMERROR001"
}
},
"_responsemeta":{
"status":"400"
}
},
{
"_responsedata":{
"Error":{
"message":"BMERROR001 - Something went wrong. Please check the error logs",
"statusCode":"400",
"reasonCode":"BMERROR001"
}
},
"_responsemeta":{
"status":"400"
}
},
{
"_responsedata":{
"Error":{
"message":"BMERROR002 - Something went wrong. Please check the error logs",
"statusCode":"400",
"reasonCode":"BMERROR002"
}
},
"_responsemeta":{
"status":"400"
}
},
{
"_responsedata":{
"name":"name1",
"col1":"value1"
},
"_responsemeta":{
"status":"204"
}
},
{
"_responsedata":{
"name":"name2",
"col1:":"value2"
},
"_responsemeta":{
"status":"201"
}
},
{
"_responsedata":{
"Error":{
"message":"BMERROR003 - Something went wrong. Please check the error logs",
"statusCode":"400",
"reasonCode":"BMERROR003"
}
},
"_responsemeta":{
"status":"400"
}
}
]
}
Это формат одного документа, и у меня много документов в одном формате. Теперь для создания этих документов в формате, который можно визуализировать с помощью D3, мне нужно сгруппировать их на основе поля reasonCode
. В результате мне нужно что-то вроде этого:
{
"errors": [
{
"code":"BMERROR001",
"count":2
},
{
"code":"BMERROR002"
"count":"1"
},
{
"code":"BMERROR003"
"count":"1"
}
]
}
Я попытался с помощью следующей агрегации, но она дает причину в виде массива и счетчика.
[{$group: {
_id:{
"reason":"$response._responsedata.Error.reasonCode"
},
count:{$sum:1}
}}]
Как можно Я правильно считаю счет, сгруппированный по reasonCode
? 1012 *