获取满足 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(如果您想要的话)。
我在 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(如果您想要的话)。