2014-09-02 4 views
0

У меня есть график, как показано ниже. Фиолетовые узлы цвета (11376 & 11394) являются моими корневыми узлами, то есть мой график начинается оттуда.Запрос Cypher для соответствия одному суточному пути графика

Теперь я хотел написать запрос cypher таким образом, чтобы я получил полный путь для узла 11376, то есть от начального узла до конечного узла (от фиолетового до желтого). Также, когда я говорю, узел 11376, я не должен получить другой узел 11394. Как я могу это сделать.

Я попытался ниже запрос, но не получить желаемый результат:

match (hh{id:'11376'})-[*0..2]-(n) return n; 

Это дает другой узел, а также то, 11394

Ниже Neo4j grapg:

My graph

Так что, если я напишу запрос соответствия cypher для узла 11376, я должен получить полный путь ниже, как показано ниже. enter image description here

Как я могу это сделать?

Благодаря

ответ

1

используя свои типы меток ваших желтых узлов, написать запрос как:

match path = (hh{id:'11376'})-[*0..3]-(n:YELLOW_NODE_LABEL_TYPE_HERE) 
return path; 

Это будет возвращать все пути, которые пересекают 3 перелета или меньше (node ​​{id: '11376'}) на любые узлы, у которых есть тип метки, назначенный вашим желтым узлам. Пути по второму фиолетовому узлу не будут включены в ваш результат, потому что для достижения желтого узла через оба фиолетовых узла потребуется больше трех прыжков.

+0

@ Кельвин, Большое вам спасибо. То, что вы предложили, действительно очень помогло мне и смогло увидеть желаемый результат. – shree11

0

Ну вы знаете, что там будет минимум 3 хмель, так что вы можете указать его в запросе:

MATCH p=(hh {id:11376})-[r*3]-(n)) RETURN p 

Кстати, не имея этикетки для желтых узлов вы не можете ограничить что путь должен заканчиваться с желтым узлом так с выше запроса вы можете иметь некоторые дополнительные пути

+0

У меня есть разные названия ярлыков для разных узлов уровня иерархии. Также я попытался с запросом u, предлагаемым, например, 'Match m = (hh {id: 11376}) - [r * 3] - (prop) return m, но он также дает другой корневой узел. Но если я укажу конкретное имя свойства в последнем узле, как показано ниже, он дает только этот путь, исключая другие значения. Запрос равен 'match p = (hh {id: 11376}) -() -() - (prop {pname: 11392}) return p;'. Но я хочу весь узел и отношения для корневого узла 11376. – shree11

Смежные вопросы