我在Neo4j中有以下结构:
业务规则如下:
经理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
非常感谢任何帮助
此致
克雷格
答案 0 :(得分:1)
在下文中,我将假设所有经理,领导者和销售人员都由具有Person
标签的节点表示。 (根据需要,节点也可以包含Manager
,Leader
和SalesPerson
标签,但出于此答案的目的,这不是必需的。)
要获取Application
的所有Person
个节点的集合,其中id
为123,您只需使用此简单查询:
MATCH (p:Person {id: 123})-[*]->(a:Application)
RETURN p, COLLECT(a) AS apps;
查询依赖于可变长度关系模式[*]
来匹配任何路径长度(至少为1)。