在Neo4j查询中过滤节点

时间:2018-09-10 01:55:12

标签: neo4j cypher

我需要加入两个不同的图。我想基于联接条件中变量路径中的节点应用其他条件。下面的查询工作正常。

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)中过滤结果。但是,我想在查询本身中执行此操作。 ALL可以代替ANY。我还想在过滤时排除起点和终点。

0 个答案:

没有答案