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)))
我有一个节点,我需要找到它的所有父关系直到根。
所以,如果我有: 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)))