Neo4j以最少的跳数返回不同的节点

时间:2012-06-06 03:35:24

标签: asp.net-mvc graph neo4j cypher neo4jclient

我有以下数据:

A --> B
B --> C

考虑这个问题:

START n = node(A, B)
MATCH p = n-[*..2]-(x)
RETURN n.Name, x.Name, length(p)

从2个输入节点开始,遍历到不超过2个跃点的其他节点。

返回以下内容:

==> +------------------------------------------------+
==> | n.Name       | x.Name              | length(p) |
==> +------------------------------------------------+
==> | "A"          | "C"                 | 2         |
==> | "B"          | "C"                 | 1         |

背景故事:在我的应用中,您可以搜索兴趣(一次多个)。每个利益都可以有相关的利益。有时,输入的利益有共同的利益,导致重复的利益。

1 个答案:

答案 0 :(得分:0)

看起来只是简单地调用MIN来完成我正在寻找的东西:

RETURN x.Name, min(length(p))

因此,它将按x.Name分组,并采用最小的跃点列。

http://docs.neo4j.org/chunked/stable/query-aggregation.html

  

聚合可以在所有匹配的子图上完成,也可以   通过引入关键值进一步划分。这些是非聚合的   表达式,用于对进入的值进行分组   聚合函数。