使用密码语言从第一个节点遍历到最后一个节点

Traverse from first node to last node using cypher language

我已经创建了节点和关系。我需要从第一个节点遍历到最后一个节点。我希望显示为的输出 印度 --> 泰米尔纳德邦 --> 钦奈 --> 坎奇普拉姆 --> Vandalur.

知道如何显示这条路径吗?

下面的查询用于创建节点和关系

CREATE (in:place {name:"India", continent:"Asia", Language:"English"}),
    (tn:place {name:"Tamil Nadu", continent:"Asia", Language:"Tamil"}),
    (ap:place {name:"Andra Pradesh", continent:"Asia", Language:"Telugu"}),
    (ch:place {name:"Chennai", continent:"Asia", Language:"Tamil"}),
    (co:place {name:"Coimbatore", continent:"Asia", Language:"Tamil"}),
    (ka:place {name:"Kanchipuram", continent:"Asia", Language:"Tamil"}),
    (th:place {name:"Thiruvallur", continent:"Asia", Language:"Tamil"}),
    (va:place {name:"Vandalur", continent:"Asia", Language:"Tamil"}),
    (pa:place {name:"Padapai", continent:"Asia", Language:"Tamil"}),
(in)- [:parent] ->(tn),
(in)- [:parent] ->(ap),
(tn)- [:parent] ->(ch),
(tn)- [:parent] ->(co),
(ch)- [:parent] ->(ka),
(ch)- [:parent] ->(th),
(ka)- [:parent] ->(va),
(ka)- [:parent] ->(pa)

Neo4j 提供 shortest path 算法,其他图形数据库可能不同(参见 documentation)。

MATCH (start:place { name: "India" }), (end:place { name: "Vandalur" }), p = shortestPath((start)-[:parent*]-(end)) RETURN p ;

如果你有一个干净的树结构,你也可以从目标节点开始并找到所有传入的 parent 关系,这些关系最终会到达根节点,如下所示:

MATCH (start:place { name: "Vandalur" })<-[:parent*]-(root:place) 
RETURN start, root;
MATCH (a:place)--(b:place)--(c:place)--(d:place)--(e:place)
RETURN a,b,c,d,e;