neo4j cypher: how to change the type of a relationship

后端 未结 5 1797
粉色の甜心
粉色の甜心 2020-12-08 07:44

I can\'t find a way to change a relationship type in Cypher. Is this operation possible at all? If not: what\'s the best way achieve this result?

相关标签:
5条回答
  • 2020-12-08 08:10

    You can't, the type of a relationship is constitutive or essential, as opposed to node labels which are arbitrary bags to group nodes. (See this q/a for an analogy.) You have to create the new relationship, delete the old (and copy properties if there are any).

    0 讨论(0)
  • 2020-12-08 08:16

    I would simply delete the relationship and create a new one:

    MATCH (a) - [r:OLD_RELATION] -> (b)
    DELETE r
    CREATE (a) - [:NEW_RELATION] -> (b)
    
    0 讨论(0)
  • 2020-12-08 08:21

    Unfortunately there is no direct change of rel-type possible at the moment.

    You can do:

    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
    
    0 讨论(0)
  • 2020-12-08 08:31

    The answer from Michael Hunger is correct but it still need with in this cypher query. WITH can be used when you want to switch different operation in one cypher query. 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
    
    0 讨论(0)
  • 2020-12-08 08:33

    I use the following when modifying it.

    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 讨论(0)
提交回复
热议问题