我开始使用Neo4j并尝试对彼此有关系的节点进行分组。
数据集如下:
create (user1 {name:'user1'}), (user2 {name:'user2'}), (user3 {name:'user3'}), (user4 {name:'user4'}), (user5 {name:'user5'}), (user6 {name:'user6'}),
(user1)-[:SHARE_WITH]->(user2),
(user1)-[:SHARE_WITH]->(user3),
(user1)-[:SHARE_WITH]->(user4),
(user2)-[:SHARE_WITH]->(user4),
(user5)-[:SHARE_WITH]->(user6)
我的目标是:
group1: [user1, user2, user3, user4]
group2: [user5, user6]
我能做到的最好的是
MATCH (s)-[:SHARE_WITH]->(d) RETURN s.name, collect(d.name)
返回
user1 [user4, user3, user2]
user2 [user4]
user5 [user6]
任何帮助表示赞赏:)
答案 0 :(得分:3)
在图论中,这种结的子集称为Clique
:every two distinct vertices in the clique are adjacent
。用于查找此类子集的密码无效。
但您可以使用名为apoc.algo.cliques
的用户程序和函数库中的APOC
过程:
CALL apoc.algo.cliques(2) YIELD clique
RETURN EXTRACT(n in clique | n.name)