2015-01-16 31 views
6

是否有任何方法將關係從一個節點複製或移動到另一個節點?將所有關係移動/複製到不同節點

我有類似這裏的情況:

neo4j merge 2 or multiple duplicate nodes

這裏:

Copy relationships of different type using Cypher

說我有在圖形

(a)-[r:FOO]->(b) 
(a)<-[r2:BAR]-(c) 

我這個模式然後有另一個節點,(d),這可能是也可能不是(a)的副本。我的想法是,從功能的角度來看節點是否重複並不重要。我希望能夠移動或複製的關係r:FOOr2:BAR使圖形現在包括

(d)-[r:FOO]->(b) 
(d)<-[r2:BAR]-(c) 

如果我當時做這個合併的節點時,我有重複,我想能夠移動的關係而不是複製,然後(可能可選)刪除(a)。請注意,有多種關係類型,我不知道類型是什麼。我意識到我可以分階段完成這項工作,但認爲如果在一個密碼查詢中有一種有效的方法來做到這一點會很好。我目前的策略是一樣的東西(不準確的語法,但只給一個想法)

​​

然而,這依賴於許多查詢,因此交易。在一個查詢中能夠實現這一點會更好(以我的簡單觀點來看)。但是,我不相信這樣的事情存在於密碼中。我錯了嗎?

任何想法?如果不清楚,請告訴我,我會盡力詳細說明並進一步解釋。

有關信息,我正在使用Neo4j 2.1.6社區版(使用.NET應用程序中的neo4jclient)。

剛纔意識到我不得不重複我的過程來解釋關係的方向,除非我誤會了嗎?即從(a)獲得所有傳出關係,將它們重新創建爲從(d)傳出,然後對所有傳入關係執行相同操作。上面的Cypher已經進行了相應的編輯。

更新:我猜這是一個管道夢,根本不可能。任何人都可以確認嗎?即使是「不!」也能得到明確的答案。如果是這樣的話,我會考慮問Neo4j的傢伙,如果這個功能是可行的,值得考慮。

更新2:從缺乏想法我猜這是不能做到的。我的研究或實驗肯定沒有進一步發展。看起來功能要求是要走的路。我不能是唯一能夠找到這個功能的人。

+0

這個功能會很好。我(想)我可能重複此在http://stackoverflow.com/questions/32628783/cypher-query-to-take-all-relationships-from-one-node-and-attach-them-to-另一 –

回答

1

我想你可以鏈接這些在一起:

// get all relationships 
MATCH 
    (a:Label1 { title : 'blah' })-[r]-(o), 
    (d:Label1 { title : 'blah blah' }) 
CREATE (d)-[r2:type(r)]-(o) 
DELETE r, a 

我不能完全肯定的唯一的事情就是使用type()功能,其中它的使用存在的能力。我現在試試吧

+0

謝謝。有興趣看看。我用'type(r)'去了,但失敗了 - 可能是我使用它的方式。我喜歡鏈接的想法,如果它可以工作。 – ceej

+0

是的,我有同樣的問題。我不認爲這是可能的。可能有一種方法可以使用'SET',但目前我沒有看到它。您可能還會考慮'WITH'子句以減少語句的數量 –

+0

是的,我曾想過使用WITH,但除非我錯過了某些東西,否則我只能看到它保存了最後的「清理」步驟?或者你的意思是'一個,一個'重複地在一個聲明中做所有事情? – ceej

相關問題