Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 如何使用Cypher查找两个节点之间的中间节点_Neo4j_Cypher_Spring Data Neo4j - Fatal编程技术网

Neo4j 如何使用Cypher查找两个节点之间的中间节点

Neo4j 如何使用Cypher查找两个节点之间的中间节点,neo4j,cypher,spring-data-neo4j,Neo4j,Cypher,Spring Data Neo4j,我们有如图所示的部门树 我需要列出节点D1和D1.A1.B1之间的所有部门节点和节点的关联用户 我需要一个密码查询 结果应该是department:D1、D1.A1、D1.A1.B1和users:U1、U2、U4使用、nodes()、unwind和collect()的以下密码查询应该可以工作。对评论的解释: // match the entire path from 'D1' to 'D1.A1.B1' match p = ( {name : 'D1'} )-[*]->( {name :

我们有如图所示的部门树

我需要列出节点D1和D1.A1.B1之间的所有部门节点和节点的关联用户

我需要一个密码查询


结果应该是department:D1、D1.A1、D1.A1.B1和users:U1、U2、U4

使用、nodes()、
unwind
collect()的以下密码查询应该可以工作。对评论的解释:

// match the entire path from 'D1' to 'D1.A1.B1'
match p = ( {name : 'D1'} )-[*]->( {name : 'D1.A1.B1'} )
// get all nodes (departments) from path
with nodes(p) as deps
// unwind deps collection to individual departments
unwind deps as dep
// match workers and managers directly connected to dep nodes
match (dep)<-[:WORKER|:MANAGER]-(u:User)
return collect(dep) as departments, collect(u) as users
//匹配从“D1”到“D1.A1.B1”的整个路径
匹配p=({name:'D1'})-[*]->({name:'D1.A1.B1'})
//从路径获取所有节点(部门)
将节点(p)作为dep
//将deps收集放回各个部门
将deps作为dep展开
//匹配直接连接到dep节点的工作人员和管理人员

match(dep)再查询一次,每个部门节点都有用户关联,有角色关系,如何查找中间节点D1和D1.A1之间的用户列表。B1@Yogi对不起,我不明白你关于角色关系的问题。你能提供更多的细节吗?我已经更新了我的问题和图片…请check@Yogi,请尝试以下操作:
match p=({name:'D1'})-[*]->({name:'D1.A1.B1'})将节点(p)作为dep展开deps作为dep匹配(dep)