В настоящее время у меня есть следующая модель: (руководитель группы) - [: ведет] -> (группа)
Как все мы знаем, изменения происходят в организации.Сегодня у нас может быть:
(Richard)-[:leads]->(Team_1)
(Henry)-[:leads]->(Team_2)
и завтра:
(Henry)-[:leads]->(Team_1)
(John)-[:leads]->(Team_2)
(Henry)-[:leads]->(Team_3)
Мой текущий код способен загружать CSV-файл и делать все эти изменения ИСКЛЮЧИТЬ , чтобы удалитьотношения между Ричардом и Team_1.
Текущая реализация, которую я имею, является следующей:
LOAD CSV WITH HEADERS FROM "file:///TLsandTeams_1st.csv" AS csvLine
MERGE(tl:TL {name: csvLine.TL})
MERGE(t:Team {name: csvLine.Team})
CREATE UNIQUE (tl)-[:leads]->(t)
Это создает первый сценарий, описанный выше.Тогда второй шаг:
LOAD CSV WITH HEADERS FROM "file:///TLsandTeams_2nd.csv" AS csvLine
MERGE (tl:TL {name : csvLine.TL})
WITH csvLine, tl
MERGE (t:Team {name : csvLine.Team})
WITH tl,t
OPTIONAL MATCH(tl)-[l:leads]->()
WITH tl,t,l
DELETE l
WITH tl,t
MERGE (tl)-[:leads]->(t);
Это работает даже в тех случаях, когда команде не был привязан лидер команды, а теперь она есть, и наоборот.Как я уже говорил, все изменения правильно введены в действие, за исключением удаления связи между Ричардом и Team_1.На самом деле я хотел бы пойти еще дальше и удалить узел Ричарда, если это возможно.
Я искал способ сделать это без необходимости удалять все узлы Team Leader и заново создавать их.
Любая помощь могла бы быть полезна.Спасибо!