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

问题描述 投票:1回答:2

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

例如:

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

(:A)-[:r1]-(:C)-[:r2]-(:D)-[:r3]-(:E)
neo4j cypher
2个回答
1
投票

我不认为你能够在遍历期间使用Cypher来评估这个问题,而且在我获得所有路径后过滤效率似乎不高(尽管可能采用树形结构)。

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


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
© www.soinside.com 2019 - 2024. All rights reserved.