Фильтрация узлов в Neo4j Query - PullRequest
0 голосов
/ 10 сентября 2018

Мне нужно объединить два разных графика. Я хотел бы применить дополнительные критерии на основе узлов в пути переменной в условии соединения. Приведенный ниже запрос работает нормально.

query1 = 
match(a:iknode)-[*1..2]->(c:iknode)
match(d:flights17)-[r1]-(e:flights17)
where d.alias contains a.name return a,c

Однако он возвращает посторонние записи. Мне нужно применить некоторые фильтры к узлам, появляющимся в части [* 1..2]. Это тоже работает.

match p = (a:fbnode)-[*1..2]->(c:fbnode)
where a.name = 'flights' and ANY (x IN nodes(p) WHERE x.name in ['leaving'])
return nodes(p)

Я попробовал следующее , которое не работает :

match p = (a:iknode)-[*1..2]->(c:iknode) 
(d:flights17)-[r1]-(e:flights17)
where d.alias contains a.name and ANY (x IN nodes(p) WHERE x.name in type(r1))
set e.f =c.name

Как мне переписать указанный выше запрос?

Один из вариантов - получить результаты первого запроса, а затем отфильтровать результаты в отдельном запросе (или Python). Тем не менее, я хотел бы сделать это в самом запросе. ВСЕ можно использовать вместо ЛЮБОГО. Я также хотел бы исключить начальный и конечный узлы при фильтрации.

1 Ответ

0 голосов
/ 15 сентября 2018

Это работает:

match(d:flights17)-[r1]-(e:flights17) match p = (a:iknode)-[*1..2]->(c:iknode)  where d.alias contains a.name and ANY (x IN nodes(p) WHERE x.name in ['leaving']) set e.f =c.name

Это также работает для устранения начального и конечного узлов. узлы (р) [1 ..- 1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...