2017-02-09 4 views
1

enter image description hereMERGE私は「aravind」ノード「ラムヤ」を削除した場合、このでのNeo4j

で状態を確認した後、「sreepad」に接続する必要があります。そのために私はクエリを書いた

MATCH (m)<-[:createdBy]-(n:Login{UserName:"aravind"})<-[:createdBy]-(z) 
merge (m)<-[:createdBy]-(z) 
set z.createdBy=m.UserName 
detach delete n 

ノードが尾を持っているとき、それはうまく動作します。しかし、エンドユーザーには取り組んでいません( "prem"とします)。どのように両方のために働くクエリを書くか???あなたが必要とする

答えて

1

事前に

ありがとう: 1)削除 2のノードを取得)親ノード 3を取得します)収集子ノード 4)ノードの削除)の関係 5に

MATCH (n:Login{UserName:"aravind"}) 
OPTIONAL MATCH (n)->[:createdBy]-(m) 
OPTIONAL MATCH (n)<-[:createdBy]-(z) 
WITH n, collect(m)[0] as m, collect(z) as zs 
FOREACH(z in zs | 
    merge (m)<-[:createdBy]-(z) 
    set z.createdBy=m.UserName 
) 
detach delete n 
+0

感謝を作成します。その働き。この場合、collect(m)[0]とm&collect(m)の違いをmと説明できますか? –

+1

Collect(m)[0]は親が1つしかないため、ノードを1つだけ使用します。 –

関連する問題