Cypher访问可变长度路径的节点

时间:2016-03-16 03:45:33

标签: neo4j cypher variable-length

我有以下问题:

我有一个像这样的MATCH条款:

MACTH (A)-[*1..]->(B)

现在,如果这个模式匹配,我需要以某种方式复制-[*1..]->部分并替换其中的所有节点,并且具有另一种类型的节点的特定类型。

例如,如果我有这个图表:

(X1:A)-[:r]->(X2:B)-[:r]->(X3:E)-[:r]->(X4:A)

我可能希望在应用规则MACTH (A:A)-[*1..]->(B:A) something something

后获取此图表

(X1:A)-[:r]->(X2:B)-[:r]->(X3:E)-[:r]->(X4:A) , (X1)-[:r]->(X5:C)-[:r]->(X3)-[:r]->(X4)

通过复制(A)(B)之间的路径,并使用类型B替换C类型的所有节点

但是如何访问查询的-[*1..]->部分?

1 个答案:

答案 0 :(得分:1)

试试这个

Match (p:Person)-[:RELATED*1..]->(e) 
with collect(distinct(id(e))) as ids Match (c:Country) where id(c) in ids 
remove c:Country set c:NewLabel 
return *

关于数据

Create (p:Person)-[:RELATED]->(b:Person)-[:RELATED]->(c:Client)-[:RELATED]->(e:Country) return *