Как удалить дубликаты отношений между двумя узлами с помощью cypher?

Когда я запускаю этот запрос:

START n1=node(7727), n2=node(7730)
MATCH n1-[r:SKILL]->n2 RETURN r

он дает мне список повторяющихся отношений, которые у меня есть между двумя узлами. что я добавляю к запросу cypher для перебора отношения, чтобы сохранить одно отношение и удалить остальные?

Ответ 1

Чтобы сделать это для двух известных узлов:

start n=node(1), m=node(2) match (n)-[r]->(m) 
with n,m,type(r) as t, tail(collect(r)) as coll 
foreach(x in coll | delete x)

Чтобы сделать это глобально для всех отношений (будьте осторожны, эта операция может быть очень дорогой в зависимости от размера вашего графика):

start r=relationship(*) 
match (s)-[r]->(e)
with s,e,type(r) as typ, tail(collect(r)) as coll 
foreach(x in coll | delete x)