Как найти все пути от узла - PullRequest
       8

Как найти все пути от узла

0 голосов
/ 11 октября 2019

Я новичок в neo4j, я прочитал несколько учебных пособий, но я застрял в поиске всех путей от узла до тех пор, пока он не достигнет другого, когда состояние меняется и каждый раз другой путь.

IЯ сделал рисунок: https://imgur.com/B0q4SM0

Начиная с узла сверху, я хотел бы найти все узлы T, которые имеют статус = 1, и мы переходим от узла типа O к T с помощью 'o«отношения и от Т до О с отношениями« я ». Если мы достигаем узла T со статусом = 0, тогда мы идем в отношение «i» и проверяем, если статус T = 1 и т. Д.

Я не знаю глубину графика. Я нашел в руководстве, что мы можем использовать [r * 1 ..], но я не уверен, как использовать здесь.

Я пробовал

match (o1:O)-[:o]-(t:T), (t)-[:i]-(o2:O)-[:o]-(t2:T) 
return o1, t, o2, t2

для первой глубиныно я не знаю, как сделать это с неизвестной глубиной и сделать глубже, если статус не 1

1 Ответ

0 голосов
/ 16 октября 2019

Ваша схема выглядит так (знак вопроса означает, что я не уверен, какие отношения вы хотели там). (: О) <- [: O] - (: Т) <- [: я] - (: О) <- [: O] - (: Т) <- [:?] - (: Т) </p>

Вам нужно как-то идентифицировать первый узел, с которого вы запускаете, и я не уверен точно, какие узлы вы пытаетесь получить из схемы, но что-то вроде этого вернет все узлы со статусом 1, которые как-то связанык первому узлу, который здесь только что идентифицирован как имеющий статус 0 (так что на самом деле это может быть более одного узла).

MATCH (firstnode:O {Status: 0})<-[:o|:i*..]-(othernodes) WHERE othernodes.Status=1 RETURN othernodes

Но будьте осторожны - любая команда * .. будет выполняться вечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...