В моем MongoDB хранятся документы, имеющие следующую структуру:
{
"curl_detail" : {
"Curl1" : {
"attack_type" : "attack1",
"flag" : "Attack",
"curl_result" : "Pass"
},
"Curl2" : {
"attack_type" : "attack1",
"flag" : "Attack",
"curl_result" : "Pass"
},
"Curl3" : {
"attack_type" : "attack2",
"flag" : "Attack",
"curl_result" : "Pass"
},
"Curl4" : {
"attack_type" : "attack3",
"flag" : "Attack",
"curl_result" : "Fail"
}
}
{
"curl_detail" : {
"Curl1" : {
"attack_type" : "attack3",
"flag" : "Attack",
"curl_result" : "Pass"
},
"Curl2" : {
"attack_type" : "attack2",
"flag" : "Attack",
"curl_result" : "Pass"
},
"Curl3" : {
"attack_type" : "attack3",
"flag" : "Pass",
"curl_result" : "Pass"
},
"Curl4" : {
"attack_type" : "attack1",
"flag" : "Attack",
"curl_result" : "Fail"
}
}
Как выполнить агрегирование MongoDB для получения следующего вывода:
[{
attack: "attack1",
expected: 3,
actual: 2
},
{
attack:"attack2",
expected: 2,
actual: 2
},
{
attack: "attack3",
expected: 2,
actual: 2
}]
Пояснение для требуемого вывода:
- Мне нужно сгруппировать по полю attack_type , соответствующему каждому локону, присутствующему в curl_detail .
- Теперь ожидается Поле в выходных данных является суммой ключа "flag" , имеющего значение "Attack" (Обратите внимание, что значения "Pass" не включается в сумму. См. ожидаемое значение attack3 в выходных данных для получения дополнительной информации)
- И фактическое поле на выходе представляет собой сумму ключа "curl_result" , имеющего значение "Pass" . (Обратите внимание, что «Fail» значения не включены в сумму)
- Сумма, рассчитанная для ожидаемое значение выходного сигнала зависит только от «флаг» ключ и сумма, вычисленная для фактического значение вывода зависит только от "curl_result" ключ.