web-dev-qa-db-ja.com

neo4jサイファー:関係のタイプを変更する方法

Cypherで関係タイプを変更する方法が見つかりません。この操作はまったく可能ですか?そうでない場合:この結果を達成する最良の方法は何ですか?

25
Sovos

残念ながら現時点では、rel-typeを直接変更することはできません。

できるよ:

MATCH (n:User {name:"foo"})-[r:REL]->(m:User {name:"bar"})
CREATE (n)-[r2:NEWREL]->(m)
// copy properties, if necessary
SET r2 = r
WITH r
DELETE r
58
Michael Hunger

Michael Hungerからの回答は正しいですが、この暗号クエリにはwithが必要です。 WITHは、1つの暗号クエリで異なる操作を切り替える場合に使用できます。 http://docs.neo4j.org/chunked/stable/query-with.html

MATCH (n:User {name:"foo"})-[r:REL]->(m:User {name:"bar"})
CREATE (n)-[r2:NEWREL]->(m)
SET r2 = r
WITH r
DELETE r
13
LoveTW

できません。関係のタイプは、ノードをグループ化する任意のバッグであるノードラベルとは対照的に、構成的または不可欠です。 ( 類推についてはこのq/aを参照 を参照してください。)新しい関係を作成し、古い関係を削除する必要があります(存在する場合はプロパティをコピーします)。

5
jjaderberg

修正するときは以下を使います。

match (from:Label1 { prop: 1 })-[r:RELATIONSHIP]->(to:Label2 { prop: 2 })
with from, r, to
create (from)-[:NEW_RELATIONSHIP]->(to)
with r
delete r
0
jpop

私は単に関係を削除して新しいものを作成します:

MATCH (a) - [r:OLD_RELATION] -> (b)
DELETE r
CREATE (a) - [:NEW_RELATION] -> (b)
0