从给定节点,我需要返回所有可变长度路径,而不需要重复的关系类型或节点标签。
例如:
(:A)-[:r1]-(:B)
(:A)-[:r1]-(:C)-[:r2]-(:D)-[:r3]-(:E)
我不认为你能够在遍历期间使用Cypher来评估这个问题,而且在我获得所有路径后过滤效率似乎不高(尽管可能采用树形结构)。
您最好的选择是使用traversal API为此实现自己的自定义过程。
这是由Neo4J的一些可爱的人为我设计的。它需要APOC。
MATCH p=(:StartingPoint)-[*1..3]->() WHERE size(apoc.coll.duplicates([x in relationships(p) | type(x)]))=0 AND size(apoc.coll.duplicates(apoc.coll.flatten([x in nodes(p) | labels(x)])))=0 RETURN p