Переход от первого узла к последнему узлу с использованием языка шифра - PullRequest
0 голосов
/ 12 ноября 2018

Я создал узлы и и отношения. Мне нужно пройти от первого узла до последнего узла. Я ожидаю, что вывод будет отображаться как Индия -> Тамил Наду -> Ченнаи -> Канчипурам -> Вандалур.

Есть идеи, как отобразить этот путь?

Ниже запрос используется для создания узлов и связей

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)

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018
MATCH (a:place)--(b:place)--(c:place)--(d:place)--(e:place)
RETURN a,b,c,d,e;
0 голосов
/ 12 ноября 2018

Neo4j предлагает алгоритм shortest path, другие графические базы данных могут отличаться (см. документация ).

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;
...