У меня есть коллекция диаграмм.Каждая диаграмма имеет несколько блоков.И у каждого блока есть несколько портов, которые сами по себе имеют несколько объектов в качестве полей.Пока я могу применять только $filter
или $group
до уровня 1 для блоков.Я не могу отфильтровать до портов на основании какого-либо условия.
Структура документа: Диаграмма
[
{
"_id": "1",
"blocks": [
{
"port": [
{
"portType": {
"function": "input"
}
}
]
}
]
}
]
Что я пытаюсь достичь, это получить список всех портов, которые имеютinput
как portType.function
из коллекции
db.collection.aggregate([{$project:{"blocks.ports":{$filter:{input:"$blocks.ports",as:"ports",cond:{$in:["input","$$ports.portType.function"]}}}}}]);
Ожидаемый результат: list<Ports>
, в качестве входных данных которого есть только portType.function
.
Фактический результат: Возвращает все документы, имеющиекак минимум один порт в качестве «входа» вместе со всеми другими портами.