假设我有两个节点:A 和 B。现在假设我有两个相似的关系:
A -r1-> B
A -r2-> B
如何进行仅返回从 A -> B 的路径的查询?以下查询返回两个相同的路径。我们可以合并结果吗?
MATCH path = (start:Fen)-[r*]->(end:Fen)
WHERE start.Name = 'A'
RETURN DISTINCT(path)
我想要解决的是找到节点之间最流行的路径。所以给出图表:
A -r1-> B
A -r2-> B
A -r3-> C
查询应该返回
A -r-> B
A -r-> C
由于 A -> B 是最受欢迎的,所以它首先出现
您可以在结果中返回端点对,按端点之间路径数量的降序排列,如下所示:
MATCH path = (start:Fen)-[*]->(end:Fen)
WHERE start.Name = 'A'
RETURN start, end, count(*) AS count
ORDER BY count DESC
顺便说一句,您以
A -r-> B
的形式描述了您想要的结果。假设 -r->
指的是路径中的所有中间节点和关系,那么它们都是不同的并出现在单独的行中。