2013-06-07 6 views
2

Учитывая базу данных, как:.Cypher запрос возвращать набор всех отношений, что А участвует в

A  F 
/\  \ 
    B C  G 
/
D 

Я хотел бы множество всех отношений, что А участвует в этом запросе является лучшим я может выполнять, но возвращает все пары узлов в графике A, с повторяющимися совместными отношениями:

START start = node(A) 
MATCH (start)-[rel*]->(child) 
RETURN rel, child; 

Как лучше всего это сделать?

ответ

3

мне нужно было что-то вроде этого (предложенный Peter Neubauer):

START s = node:node_auto_index(name="A") 
MATCH (s)-[:CHILD*0..]->(parent),   
     path=(parent)-[:CHILD]->(child),  
     (child)-[:CHILD*0..]->(leaf) 
WHERE NOT leaf-[:CHILD]->() 
WITH DISTINCT path AS path 
RETURN EXTRACT(n IN NODES(path): n.name) 

набросал до on the neo4j website.

Более лаконичная версия:

START s = node:node_auto_index(name="A") 
MATCH (s)-[:CHILD*0..]-(ss), 
     path = (ss)-[:CHILD]->(child) 
WITH DISTINCT path AS path 
RETURN EXTRACT(n IN NODES(path): n.name) 
Смежные вопросы