获取满足 Neo4J 条件的断开连接的集群数

Getting number of disconnected clusters which fulfil a condition in Neo4J

我在 Neo4J 中有一个图形数据库,其中包含不同类型和关系的节点。在整个数据集中,我想获得包含某种类型的节点和关系的断开连接的集群的数量。

举个例子,我能够return所有满足条件的节点:

match (p1:TYPE1)-[r:RELATIONSHIP_1]-(p2:TYPE1)
return p1, p2, r

此查询给出的图像与所附图像相似

在这方面,我想仅根据查询中的节点和关系来获取 "disconnected" 个簇的数量(因此在图像中它将是 27 个分离的簇)

Connected Components algorithm of the neo4j Graph Algorithms 插件应该对您的用例有用。

例如,此查询应为图中的每个连通分量生成一行:

CALL algo.unionFind.stream('User', 'FRIEND', {}) YIELD nodeId, setId
RETURN algo.asNodes(COLLECT(nodeId)) AS users, setId

每一行将包含该组件中 User 个节点的集合,以及一个唯一的组件 ID(如果您想要的话)。