neo4j cypher:如何改变关系的类型

时间:2014-03-26 18:47:37

标签: neo4j cypher

我无法找到改变Cypher关系类型的方法。这项操作是否可行?如果不是:实现这一结果的最佳方式是什么?

6 个答案:

答案 0 :(得分:50)

不幸的是,目前还没有直接改变rel类型。

你可以这样做:

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

答案 1 :(得分:12)

Michael Hunger的答案是正确的,但在此密码查询中仍需要with。 如果要在一个密码查询中切换不同的操作,可以使用WITHhttp://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

答案 2 :(得分:5)

你不能,关系的类型是组成的或必要的,而不是节点标签,它是任意包组节点。 (参见this q/a for an analogy。)您必须创建新关系,删除旧关系(如果有则复制属性)。

答案 3 :(得分:0)

修改时我使用以下内容。

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

答案 4 :(得分:0)

我只是删除关系并创建一个新的关系:

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

答案 5 :(得分:0)

我最近在使用 Neo4j 4.2.5。

我使用 APOC apoc.refactor.setType 来设置关系类型。

阅读文档并安装插件。

https://neo4j.com/labs/apoc/4.2/introduction/