Как удалить граф с необязательными сегментами и отсоединить листовые узлы - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть динамически определенный график (из внешнего интерфейса), и мне нужно его удалить.

Я не знаю, существуют ли все сегменты графа в базе данных, поэтому я использую переменную длину пути, например.

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, но и содержат узлы всехуровни.

Есть ли способ, как отфильтровать сегменты от пути с переменной длиной сегмента ??

Спасибо,

Майкл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...