Как фильтровать два разных списка синхронно по атрибуту узла в Neo4j? - PullRequest
0 голосов
/ 28 ноября 2018

Результатом более сложного запроса Cypher является список узлов и список отношений, где каждая позиция / строка одного списка по содержанию связана с той же позицией / строкой другого списка.Отношение состоит исключительно из положения в двух списках, между соответствующими элементами нет графика.

List

Поскольку мне нужно отфильтровать оба списка покак атрибут узлов, я объединил оба списка в карте и попытался реализовать свое намерение с помощью понимания списка .

MATCH
  <complex query>
WITH collect(labelA) AS nodesList, collect(relation) AS relationList
WITH {nodes:nodesList, relations:relationList} AS data
WITH [x IN data WHERE x.nodes.attributName <> „text“] AS filteredData
RETURN filteredData;

, что по понятным причинам приводит к следующей ошибке в строке 5.

Neo.ClientError.Statement.TypeError: Несоответствие типов: ожидается карта, но был список {{4538063), (4538063), (4538063)}

Когда я раскручиваюсьx.nodes часть в строке, прежде чем она работает с технической точки зрения, но я теряю свои зависимости для второй таблицы.Итак, как я могу фильтровать оба списка синхронно по атрибуту узла первого списка?

1 Ответ

0 голосов
/ 28 ноября 2018

У вас есть список пар, поэтому вы должны собрать их как таковые, а затем отфильтровать как один элемент.

Пример того, что я имею в виду ...

MATCH
  <complex query>
WITH COLLECT({node:labelA, relation:relation}) AS data
// or you can do
// WITH COLLECT([labelA, relation]) AS data
WITH filter(x IN data WHERE x.node.attributName <> "text") AS filteredData
RETURN filteredData;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...