Мне нужно получить документ из базы данных, данные следующие
{
"systemName": "ABC",
"systemUsageAttrs" : [
{
"cpuUsage": 30,
"memUsage": 40,
"isActive": false
},
{
"cpuUsage": 88.2,
"memUsage": 33.5,
"isActive": false
}
]
},
{
"systemName": "DEF",
"systemUsageAttrs" : [
{
"cpuUsage": 30,
"memUsage": 40,
"isActive": false
},
{
"cpuUsage": 88.2,
"memUsage": 33.5,
"isActive": true
}
]
},
{
"systemName": "GHI",
"systemUsageAttrs" : [
{
"cpuUsage": 30,
"memUsage": 40,
"isActive": true
},
{
"cpuUsage": 88.2,
"memUsage": 33.5,
"isActive": true
}
]
}
Я использовал фрагмент кода ниже, но он возвращает 2 документа вместо одного.
List<Document> systemDetailsAL = sysUsageDetailsColl.aggregate(
asList(
unwind("$systemUsageAttrs"),
match(eq("systemUsageAttrs.isActive",false)),
group("$_id", Accumulators.first("systemName","$systemName"),
Accumulators.push("systemUsageAttrs", "$systemUsageAttrs")),
project(Projections.fields(Projections.excludeId()))
)
).into(new ArrayList<Document>());
Приведенный выше код также предоставляет документ, который имеет isActive: false для одного из элементов в массиве.
Ожидаемый результат - Document с systemName: AB C, так как он имеет isActive: false во всех элементах массива.
Любая помощь / указатели приветствуются.