如何在neo4j中检索相关节点组表?

如何在neo4j中检索相关节点组表?,neo4j,Neo4j,我在neo4j中有一个数据集,看起来像这样: (a)-[similar_to]->(b) 每个节点都有一个名为“id”的唯一属性。在以下示例数据集中,每个“a”节点都与每个“b”节点具有“相似”关系: a.id b.id 1 5 1 2 2 13 3 12 以下是拓扑的外观: 我想做的是检索一个包含两组节点的表,这两组节点连接在一起,结果如下所示: 1, 2, 5, 13 3, 12 到目前为止,我能用Cypher做的最好的事情是: MATCH (

我在neo4j中有一个数据集,看起来像这样:

(a)-[similar_to]->(b)
每个节点都有一个名为“id”的唯一属性。在以下示例数据集中,每个“a”节点都与每个“b”节点具有“相似”关系:

a.id  b.id
1     5
1     2
2     13
3     12
以下是拓扑的外观:

我想做的是检索一个包含两组节点的表,这两组节点连接在一起,结果如下所示:

1, 2, 5, 13
3, 12
到目前为止,我能用Cypher做的最好的事情是:

MATCH (a)-[r:similar_to*]-(b)
RETURN collect(distinct a.id)
但是,其输出是在一行上打印所有节点:

5, 1, 2, 3, 12, 13
我已经尝试过这个查询的各种排列方式,但一直失败。我在论坛上搜索了“subgraph”和“neo4j”,但找不到合适的解决方案。如有任何指导/想法,将不胜感激


谢谢

我的理解是,您希望每个根节点“a”以及与“a”具有直接/间接关系的所有节点组[:类似于],如果是,请尝试以下操作

MATCH (a)-[r:similar_to*]->(b)
Where not(a<-[:similar_to]-())
RETURN a, collect(distinct b.id) as group
(a)-[r:similar_to*0..]->(b)