如何在 memgraph/cypher 中获取图中的唯一路径?

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

假设我有两个节点: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 是最受欢迎的,所以它首先出现

neo4j cypher memgraph
1个回答
0
投票

您可以在结果中返回端点对,按端点之间路径数量的降序排列,如下所示:

MATCH path = (start:Fen)-[*]->(end:Fen)
WHERE start.Name = 'A'
RETURN start, end, count(*) AS count
ORDER BY count DESC

顺便说一句,您以

A -r-> B
的形式描述了您想要的结果。假设
-r->
指的是路径中的所有中间节点和关系,那么它们都是不同的并出现在单独的行中。

© www.soinside.com 2019 - 2024. All rights reserved.