0

我有一个这样的分层组织结构:

OrgNode(3)-[HAS_PARENT]->OrgNode(2)-[HAS_PARENT]->OrgNode(1)

我想要一个密码查询,它可以在给定任何节点 ID 的情况下为我提供顶级组织:

topOrg(3) = OrgNode(1)
topOrg(2) = OrgNode(1)
topOrg(1) = OrgNode(1)

当起始节点至少有一个父节点时,我可以编写查询以返回顶级组织。但是当同一查询中没有父链接时,我无法弄清楚如何返回起始节点:

start n=node(3)
match (n)-[:PARENT*]->(m)-[r?:PARENT]->()
WHERE r is null
return m
4

1 回答 1

1

您可以使用 UNION 运算符将您的结果与另一个处理没有父节点的起始节点的查询的结果相结合,

start n=node(3)
match (n)-[:PARENT*]->(m)-[r?:PARENT]->()
WHERE r is null
return m as result
UNION 
Start n=node(3)
Match n 
Where not(n-[:PARENT]-())
Return n as result
于 2013-08-16T15:35:56.773 回答