Neo4j cypher: как изменить тип отношения

Я не могу найти способ изменить тип отношения в Cypher. Возможно ли это вообще? Если нет: какой лучший способ достичь этого результата?

Ответы

Ответ 1

К сожалению, в настоящий момент нет прямого изменения 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

Ответ 2

Ответ из Michael Hunger верен, но в этом cypher-запросе все равно нужен with. with может использоваться, если вы хотите переключать различные операции в одном запросе cypher. 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

Ответ 3

Вы не можете, тип отношения является конститутивным или существенным, в отличие от node ярлыков, которые являются произвольными мешками для группировки узлов. (См. этот q/a для аналогии.) Вы должны создать новое отношение, удалить старые (и свойства копирования, если они есть).

Ответ 4

Я использую следующее при его изменении.

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