Neo4j - 多级层次结构的问题

时间:2017-06-06 22:33:52

标签: neo4j cypher

我在Neo4j中有以下结构:

Neo Structure

业务规则如下:

经理1管理团队领导1和团队领导2

团队负责人1管理销售人员1,2和3

团队负责人2管理销售人员4,5和6

销售员4管理销售员7

销售员1 OWNS经纪人1

销售员2 OWNS经纪人2

销售员3 OWNS经纪人3

销售员5 OWNS经纪人5

销售员6 OWNS经纪人6

销售员7 OWNS经纪人4

经纪人1是BROKER_ON申请1

经纪人2是BROKER_ON申请2

经纪人3是BROKER_ON申请3

代理4是BROKER_ON应用程序4和5

经纪人5是BROKER_ON申请6

经纪人6是BROKER_ON申请7

我正在努力使用cypher查询,以便:

经理1应该返回申请1,2,3,4,5,6和7

团队领导1应该返回应用程序1,2和3

团队领导2应该返回申请4,5,6和7

销售员1应返回申请1

销售员2应该返回申请2

销售员3应该返回申请3

销售员4应该返回申请4和5

销售员5应该返回申请6

销售员6应该返回申请7

销售员7应返回申请4和5

非常感谢任何帮助

此致

克雷格

1 个答案:

答案 0 :(得分:1)

在下文中,我将假设所有经理,领导者和销售人员都由具有Person标签的节点表示。 (根据需要,节点也可以包含ManagerLeaderSalesPerson标签,但出于此答案的目的,这不是必需的。)

要获取Application的所有Person个节点的集合,其中id为123,您只需使用此简单查询:

MATCH (p:Person {id: 123})-[*]->(a:Application)
RETURN p, COLLECT(a) AS apps;

查询依赖于可变长度关系模式[*]来匹配任何路径长度(至少为1)。