Neo4J-获取所有路径而无需重复的关系类型或节点标签

时间:2019-02-09 16:08:14

标签: neo4j cypher

从给定节点中,我需要返回所有可变长度路径,而无需重复关系类型或节点标签。

例如:

(:A)-[:r1]-(:B)

(:A)-[:r1]-(:C)-[:r2]-(:D)-[:r3]-(:E)

2 个答案:

答案 0 :(得分:1)

我认为您无法在遍历过程中使用Cypher对此进行评估,而且在我看来,在获取所有路径后过滤都是无效的(尽管可能是树结构)。

您最好的选择是使用traversal API来实现自己的自定义过程。

答案 1 :(得分:0)

这是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