如何在neo4j中检索相关节点组表?
我在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 (
(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)