0

次のような階層的な組織構造があります。

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

ノード ID のいずれかを指定して最上位の組織を提供するサイファー クエリが必要です。

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

開始ノードに少なくとも 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 に答える