繁体   English   中英

寻找两个节点之间的所有路径(一种节点除外)

[英]Seek for all paths between two nodes except one type of node

我正在尝试绘制两个节点之间除具有特定类型节点的路径之外的所有连接(路径)的图。

例如,我正在寻找A和B之间的路径,除了通过X类型节点的连接。

因此,作为结果,我想通过X类型的节点获取除A以外的所有路径,例如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

为此,您将需要一个路径变量,并使用none()谓词来确保路径中的任何节点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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM