2013-12-22 67 views
2

我有一組我想要「替換」的關係,即創建一個新關係,然後刪除舊關係,因爲關係是不可變的。如何使用Cypher「替換」Neo4j中的關係?

我原本以爲這:

MATCH paths=()-[:BRANCH]-() 
FOREACH (old in relationships(paths) | 
    WITH startNode(old) as n1, endNode(old) as n2 
    MERGE (n1)-[new:CONTAINS]-(n2) 
    SET new = old 
    DELETE r 
) 

WITH關鍵字是不允許的,必須能夠找出如何分配局部變量的開始和結束節點。

+0

與論壇網站不同,我們不使用「謝謝」或「任何幫助讚賞」,或在[so]上簽名。請參閱[應該'嗨','謝謝',標語和致敬辭職](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-刪除 - 從 - 個)。 – rene

+0

@rene瞭解。 –

回答

5

您可以再次使用FOREACH破解與,例如:

FOREACH (n1 in [startNode(old)]| ... // you now have an identifier n1 referring to startNode(old) 

如果這僅僅是一個長度爲1路,我不知道我看到做這種方式的價值,雖然。難道你不能這樣做:

MATCH (n1)-[old:BRANCH]->(n2) 
CREATE (n1)-[new:CONTAINS]->(n2) 
DELETE old 
+0

好啊,謝謝。後者是我目前需要的,但會探索前者。我傾向於忘記這些操作的集合性。 –

相關問題