Bir ilişkiyi bir düğümden diğerine kopyalamak veya taşımak için herhangi bir yol var mı?Farklı düğümlere tüm ilişkileri taşıma/kopyalama
neo4j merge 2 or multiple duplicate nodes
ve burada:
Copy relationships of different type using Cypher
Ben grafiğin(a)-[r:FOO]->(b)
(a)<-[r2:BAR]-(c)
ben bu desen var ki
burada benzer bir durum var daha sonra başka bir düğüm var, 01 Bir (a)
kopyası olabilir veya olmayabilir. Benim düşüncem, düğümlerin bir işlev noktasından kopup kopmadığının bir önemi yok. Sonra düğümleri birleştirmek için bu yaptığını ise grafik şimdi çiftleri varken ilişkileri hareket edebilmek istiyorum
(d)-[r:FOO]->(b)
(d)<-[r2:BAR]-(c)
içerdiğini bu yüzden taşımak veya ilişkileri r:FOO
kopyalayıp r2:BAR
edebilmek istiyorum kopyalamak yerine ve sonra (belki de isteğe bağlı olarak) (a)
'u silin. Birden fazla ilişki türü olduğunu ve türlerin ne olacağından emin olmadığımı unutmayın. Bunu aşamalı olarak yapabileceğimin farkındayım, ancak tek bir sorguda yapmanın etkili bir yolu olsaydı harika olacağını düşündüm. Benim şu anki stratejisi
// get all outgoing relationships
MATCH (a:Label1 { title : 'blah' })-[r]->(o)
RETURN r
// returns FOO and BAR
// for each relationship type, create one from (d) and copy the properties over
MATCH (a:Label1 { title : 'blah' })-[r:FOO]->(o), (d:Label1 { title : 'blah blah' })
CREATE (d)-[r2:FOO]->(o)
SET r2 = r
...etc...
// now do the same for incoming relationships
MATCH (a:Label1 { title : 'blah' })<-[r]-(o)
RETURN r
// returns FOO and BAR
// for each relationship type, create one from (d) and copy the properties over
MATCH (a:Label1 { title : 'blah' })<-[r:FOO]-(o), (d:Label1 { title : 'blah blah' })
CREATE (d)<-[r2:FOO]-(o)
SET r2 = r
...etc...
// finally delete node and relationships (if required)
MATCH (a:Label1 { title : 'blah' })-[r]-(o)
DELETE r, a
Ancak bu sorgular ve dolayısıyla işlemlerin bir dizi dayanır (sözdizimi kesin ama sadece bir fikir vermek için değil) gibi bir şeydir. Bir sorguda bunu başarmak çok basittir (benim basit görünümde). Bununla birlikte, bu gibi bir şeye inanmam. Yanlış mıyım?
Herhangi bir fikrin var mı? Bu net değilse ve daha ayrıntılı bir şekilde açıklamaya ve açıklamaya çalışmamı söyleyin.
Bilgi için Neo4j 2.1.6 topluluk sürümünü kullanıyorum (bir .NET uygulamasından neo4jclient ile).
Yanlış anlaşılmadığım sürece ilişkinin yönünü açıklamak için sürecimi tekrarlamak zorunda olduğumu fark ettiniz mi? yani, tüm giden ilişkileri (a)
'dan alın, (d)
'dan gidenleri yeniden oluşturun ve sonra gelen tüm ilişkiler için aynı işlemi yapın. Yukarıdaki Cypher buna göre düzenlenmiştir.
GÜNCELLEME: Bunun bir boru hayali olduğunu ve mümkün olmadığını tahmin ediyorum. Bunu onaylayan var mı? “Hayır!” Olsa bile kesin bir cevaba sahip olmak iyi olur. Eğer öyleyse Neo4j 'i bu işlevsellik bile makul ve göz önünde bulundurmaya değer mi diye sormayı düşünürdüm.
GÜNCELLEME 2: Fikirlerin eksikliğinden, bunun yapılamayacağını tahmin ediyorum. Araştırmam veya denememde kesinlikle fazla bir şey yok. Bir özellik isteği gibi görünüyor yol gitmek için. Bu işlevselliği son derece kullanışlı bulabilecek tek kişi ben olamam.
Bu özellik güzel olurdu. Ben (düşün) bunu http://stackoverflow.com/questions/32628783/cypher-query-to-take-all-relationships-from-one-node-and-attach-them-to-another –