Neo4j分组有两种关系

时间:2017-09-10 00:37:33

标签: graph neo4j cypher

我有一个图表,表示像这样的节点的层次结构。 expended graph

假设这个代表完整的层次结构,但我还需要通过在不同级别进行分组来创建中间结果。

假设我正在为节点A请求数据。我希望以最近的组关系重新组合节点。我会得到这样的东西: graph summary A

基本上,用户可以将节点关联到组,我需要以方便的方式表示数据以显示组织结构图。

我不知道从哪里开始获得最佳解决方案。

这是我的neo4js db:

CREATE (a:Node { name: 'a' }), (b:Node { name: 'b' }), 
   (c:Node { name: 'c' }), (d:Node { name: 'd' }),
   (e:Node { name: 'e' }), (f:Node { name: 'f' }), 
   (g:Node { name: 'g' }), (h:Node { name: 'h' }),

   (g1:Group { name: 'group1'}), 
   (g2:Group { name: 'group2'}),
   (g3:Group { name: 'group3'}),

   (a)-[:child]->(b), 
   (a)-[:child]->(c),
   (a)-[:child]->(d),
   (b)-[:child]->(e),
   (c)-[:child]->(f),
   (c)-[:child]->(g),
   (c)-[:child]->(h),

   (b)-[:belongsTo]->(g1),
   (c)-[:belongsTo]->(g2),
   (g)-[:belongsTo]->(g3),
   (h)-[:belongsTo]->(g3);

Neo4j console

1 个答案:

答案 0 :(得分:0)

如果您想查看任何给定组中包含的组织数量,这很简单:

MATCH (g:Group)<-[:belongsTo]-(x:Node)
RETURN g.name, count(x);

这将为您提供每个组名,以及其中包含的节点数。