У меня есть динамически определенный график (из внешнего интерфейса), и мне нужно его удалить.
Я не знаю, существуют ли все сегменты графа в базе данных, поэтому я использую переменную длину пути, например.
MATCH p=(n0:I {myId:'1234'})-[:rel1 *0..1]->(n1)-[:rel2 *0..1]->(n2)
Кроме того, некоторые части графика могут быть общими, поэтому мне нужно исключить их из операции удаления и только отсоединить их отношения.
Наконец, я пришел к следующему запросу(он исключает n2 узла из результата, поэтому их следует только отсоединять, но не удалять):
MATCH p=(n0:I {myId:'1234'})-[:rel1 *0..1]->(n1)-[r2:rel2 *0..1]->(n2)<-[:rel3 *0..1]-(n3)-[:rel4 *0..1]->(n4)
RETURN [n IN NODES(p) WHERE n.myId <> n2.myId | n.myId] AS nodeIds,
[r IN RELATIONSHIPS(p) WHERE r <> r2] AS relations;
Проблема состоит в том, что значения n2 в фильтре являются не только узлами уровня n2, но и содержат узлы всехуровни.
Есть ли способ, как отфильтровать сегменты от пути с переменной длиной сегмента ??
Спасибо,
Майкл