Neo4j 将graphdb遍历到第n次

Neo4j 将graphdb遍历到第n次,neo4j,cypher,traversal,Neo4j,Cypher,Traversal,我不知所措 场景:从Joe处获得深度2(#的表示“Person”。字母表示“Position”) 接球是指一个人被拴在一个位置上。职位之间有关系,但一个人与另一个人没有关系。所以它是这样的: Joe<-[:occupied_by]-(PositionA)-[:authority_held_by]-> (PositionB)-[:occupied_by]->Sam PositionA, PositionB (inferring, A-[:A_H_B]->B) Posi

我不知所措

场景:从Joe处获得深度2(#的表示“Person”。字母表示“Position”)

接球是指一个人被拴在一个位置上。职位之间有关系,但一个人与另一个人没有关系。所以它是这样的:

Joe<-[:occupied_by]-(PositionA)-[:authority_held_by]->
(PositionB)-[:occupied_by]->Sam
PositionA, PositionB   (inferring, A-[:A_H_B]->B)
PositionB, PositionE   (inferring, B-[:A_H_B]->E)
PositionF, PositionA   (inferring, F-[:A_H_B]->A)
PositionG, PositionA   (inferring, G-[:A_H_B]->A)
如果我们有双向关系,比如A-[:authority\u hold\u by]->B和B-[:manages]->A 我不介意第一列或第二列是什么,因为我们可以让第三列代表这种关系

PositionB, PositionA, [:manages]
但我们正试图远离双向关系

最终我想要的是:

Joe<-[:occupied_by]-(PositionA)-[:authority_held_by]->
(PositionB)-[:occupied_by]->Sam
PositionA, PositionB   (inferring, A-[:A_H_B]->B)
PositionB, PositionE   (inferring, B-[:A_H_B]->E)
PositionF, PositionA   (inferring, F-[:A_H_B]->A)
PositionG, PositionA   (inferring, G-[:A_H_B]->A)
这是可能的塞弗或我必须做一些黑魔法


我希望我的解释通俗易懂。。提前非常感谢

将返回p替换为-

RETURN nodes(p)[0] AS START, LAST(nodes(p)) as last 

工作?

嘿,丹,谢谢你的意见。我可以看到您将使用它,但它仍然返回第一列作为位置a(起始节点):(您也可以使用head(节点(p))如何
返回perStart、perEnd、posStart、posEnd
?路径是节点和rel的集合,即您可以使用节点(p)和rels(p),请参阅cypher refcard:neo4j.org/resources/cypher
RETURN nodes(p)[0] AS START, LAST(nodes(p)) as last