我正在尝试绘制两个节点之间的所有连接(路径)的图形,但具有特定类型节点的路径除外。
例如,我正在查找A和B之间的路径,除了通过X类型节点的连接。
因此,我想通过X类型的节点获得从A到B的所有路径,例如A-> C(与X不同的类型)-> B-好的,A-> D(X类型) )-> B不好。
路径上的节点数当然可以>2。
我写了这样的东西,但我不知道如何实现
MATCH (p1:Person {name:'Brad Pitt'}), (p2:Person {name:'Tom Hanks'}),
paths=allShortestPaths((p1)-[*]-(p2))
UNWIND nodes(paths) as rel
RETURN paths, collect(distinct labels(rel)) as types
答案 0 :(得分:0)
为此,您需要一个路径变量,并使用none()
谓词来确保路径中没有要排除的节点类型。
以您的示例为例,如果我们有:Director节点,而您想排除这些节点的路径,则可以这样:
MATCH (p1:Person {name:'Brad Pitt'}), (p2:Person {name:'Tom Hanks'}),
path=allShortestPaths((p1)-[*]-(p2))
WHERE none(node in nodes(path) WHERE node:Director)
RETURN path