Neo4j 父子关系

Neo4j parent-child relationship

我有一个节点,我需要找到它的所有父关系直到根。

所以,如果我有: A->B->C->D(根) A->E->F->D(根)

A 是我拥有的节点,我需要它的所有祖先。

我尝试了密码查询:

MATCH (n:yo {name:"foo"})-[:HELLO*1..]->(p:yo) RETURN p

但它向我显示了这样一个列表:B、C、D、E、F。所以他们之间的联系就失去了。是否可以有像 [[B->C->D],[E->F->D]]

这样的列表

我在某个网站上看到了这个查询,它有效。但它 returns [[A,B],[A,B,C],[A,B,C,D]]。我不需要子路径。

start c = node:node_auto_index ( object_id = ‘10179’  )
MATCH path =  c <- [ : PARENT_OF* ] – p
return  distinct
length ( path )  AS PATH_LENGTH
, extract ( n in nodes ( path ) : n.object_id ) as the_path
order by length ( path )

您正在寻找这样的东西。匹配从 A 节点开始并以不是 :CHILD_OF 另一个节点的节点结束的路径。这将为每个示例数据 return 两行节点集合:

MATCH p=(a:Node {name: 'A'})-[:CHILD_OF*]->(end:Node)
WHERE NOT (end)-[:CHILD_OF]->()
RETURN tail(nodes(p))

如果您想要单行 return,您也可以 collect() 结果。

MATCH p=(a:Node {name: 'A'})-[:CHILD_OF*]->(end:Node)
WHERE NOT (end)-[:CHILD_OF]->()
RETURN collect(tail(nodes(p)))