在Cypher

时间:2019-03-07 11:15:05

标签: neo4j cypher

我有带有标签A的节点。其中一些与关系TEST相关联(请参见图A)。

我要MATCH个连接的节点组,为每个组创建一个新节点B,并创建一个从该组的每个成员到新节点B的关系(请参阅图B)。我知道这些小组很小,建立关系TEST的步骤不超过3个。

如何MATCH A个节点并返回连接的组? APOC是否实现了图算法?


enter image description here

1 个答案:

答案 0 :(得分:1)

我找到了答案,也许对某人还是有帮助的

图算法包()https://neo4j.com/docs/graph-algorithms/current/中有几种用于社区检测的算法。在这种情况下,我们会寻找已连接的组件https://neo4j.com/docs/graph-algorithms/current/algorithms/connected-components/

该算法可以找到连接的组件,并在节点上存储该组件的ID:

CALL algo.unionFind('A', 'TEST', {write:true, partitionProperty:"partition"})
YIELD nodes, setCount, loadMillis, computeMillis, writeMillis;

有了这个新属性,MATCH就能轻松属于一个特定组的所有节点:

MATCH (a:A)
WITH a.partition AS p, a
RETURN p, count(a)