2015-03-03 1 views

ответ

2

Нет, вы не можете повторно назначить начальный узел для определенной связи. То, что вы можете сделать, это удалить эти отношения, а затем создать новые, которые указывают, куда вы хотите.

Например:

MATCH (n { id: "startpoint"})-[r]->(), (m {id: "endpoint"}) 
MERGE (n)-[:newRelationship]->(m) 
DELETE r; 

Этот запрос должен был бы получить гораздо более сложным, если тип :newRelationship может меняться в зависимости от r

+0

Спасибо. Этот запрос не будет выполнять задачу, поскольку он установит m как endNode вместо StartNode. В любом случае, я ищу запрос, который мог бы учитывать тип отношения. – Hugo

+0

Невозможно установить тип нового отношения, основанного на типе существующего отношения, все в одном запросе cypher? – Hugo

+0

Нет - снова вы не переустанавливаете типы отношений через cypher; вы создаете взаимосвязь нужного типа, который вам нужен, а затем, при необходимости, удалите старый тип отношений. Я считаю, что только свойства и ценности отношений могут быть изменены. – FrobberOfBits

0

данные Пример:

CREATE CONSTRAINT ON (city:City) ASSERT city.name IS UNIQUE; 
CREATE CONSTRAINT ON (state:State) ASSERT state.name IS UNIQUE; 

MERGE (pb:City {name: 'Paderborn'}) 
MERGE (state1:State {name: 'Bavaria'}) 
MERGE (state2:State {name: 'North Rhine-Westphalia'}) 
MERGE (pb)-[:LOCATED_IN]->(state1); 

Следующая инструкция удалит существующие отношения и создаст новый:

MATCH (n { name: "Paderborn"})-[r]->(), (state {name: "Bavaria"}) 
MERGE (n)-[:LOCATED_IN]->(state) 
DELETE r; 
Смежные вопросы