Ответ 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
Я не могу найти способ изменить тип отношения в Cypher. Возможно ли это вообще? Если нет: какой лучший способ достичь этого результата?
К сожалению, в настоящий момент нет прямого изменения 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
Ответ из 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
Вы не можете, тип отношения является конститутивным или существенным, в отличие от node ярлыков, которые являются произвольными мешками для группировки узлов. (См. этот q/a для аналогии.) Вы должны создать новое отношение, удалить старые (и свойства копирования, если они есть).
Я использую следующее при его изменении.
match (from:Label1 { prop: 1 })-[r:RELATIONSHIP]->(to:Label2 { prop: 2 })
with from, r, to
create (from)-[:NEW_RELATIONSHIP]->(to)
with r
delete r