Cypher:每个节点上具有条件的可变长度路径

时间:2016-03-19 04:42:52

标签: path neo4j cypher

如果我想在我的图表中找到从节点A到节点B的变量长度路径,其中所有节点都有一定的标签,A和{{1有一个不同的标签 - 我该怎么做?

B

1 个答案:

答案 0 :(得分:4)

如果所有节点只有一个标签,则此查询应该有效:

MATCH p=(a)-[*]->(b)
WITH p, LABELS(a) AS la, LABELS(b) AS lb, NODES(p)[1..-1] AS nodes
WITH p, la, lb, nodes, LABELS(nodes[0]) AS label
WHERE label <> la AND label <> lb AND ALL(x IN nodes[1..] WHERE LABELS(x) = label)
RETURN p;

查询要求所有中间节点具有相同的标签,并且末端节点具有与中间节点不同的标签(或标签)。