Я пытаюсь использовать операцию $ filter на вложенном массиве и не могу заставить его работать правильно.
Работает ли операция $ fliter с вложенными массивами?
Это моя коллекция MongoDB
{
metrics: [
{hits: 4 ,data: [
{"status_Code" : 200, "response_time" : 245 },
{"status_Code" : 200, "response_time" : 343},
{"status_Code" : 501, "response_time" : 345 },
{"status_Code" : 200, "response_time" : 234},
{"status_Code" : 0, "response_time" : -1, },
]
},
{hits: 2 ,data: [
{"status_Code" : 200, "response_time" : 245},
{"status_Code" : 200, "response_time" : 343},
{"status_Code" : 0, "response_time" : -1},
{"status_Code" : 0, "response_time" : -1},
{"status_Code" : 0, "response_time" : -1},
]}
],
}
Совокупные Запрос:
db.collection.aggregate([
{
$project: {
metrics: {
$filter: {
input: "$metrics.data",
as: "mdata",
cond: {$gt: ["$$mdata.response_time", -1]}
}
}
}
}
]);
Желаемая Выход:
{
metrics: [
{
hits: 4 ,
data: [
{"status_Code" : 200, "response_time" : 245 },
{"status_Code" : 200, "response_time" : 343},
{"status_Code" : 501, "response_time" : 345 },
{"status_Code" : 200, "response_time" : 234},
]
},
{
hits: 2 ,
data: [
{ "status_Code" : 200, "response_time" : 245},
{"status_Code" : 200, "response_time" : 343},
]
}
]
}