从路径

时间:2016-12-19 20:00:22

标签: neo4j cypher

我有一条返回许多路径的路径。 nodes(path)看起来像:

[a, b, c, d],
[a, b, e],
[a, f]

我想要的是获得所有节点。所以将该路径转换为

a
b
c
d
e
f

会很棒。我想继续在其他cypher语句中使用节点,因此将它们留在集合中对我来说不起作用。

有什么想法吗?

编辑1

MATCH(t:THING1 {id:"t1"})-[:AFFECTS]->(x:SOME_NODE), (t)-[:CHANGES]->(SOME_NODE)
MATCH p=shortestpath((s)-[MY_RELATION*0..4]->(x))
WITH collect(nodes(p)) as nodes
WITH REDUCE(output = [], r IN nodes | output + r) AS flat

这会产生一组节点。现在将其转换为行并重复删除...

1 个答案:

答案 0 :(得分:6)

您可以从路径中展开节点集合,然后返回不同的节点。

MATCH(t:THING1 {id:"t1"})-[:AFFECTS]->(x:SOME_NODE), (t)-[:CHANGES]->(SOME_NODE)
MATCH p=shortestpath((s)-[MY_RELATION*0..4]->(x))
UNWIND nodes(p) as n
RETURN DISTINCT n