Соединение конца набора с началом - PullRequest
0 голосов
/ 13 января 2020

У нас есть набор узлов, которые связаны между собой. Каждый узел имеет ссылку на следующий узел в цепочке. Когда цепь заканчивается, этот конечный узел просто висит там. Смотрите график c ниже.

Путь к узлу

Каждый из этих узлов имеет одинаковый уровень, поэтому, пока они находятся в цепочке, они имеют одинаковый номер. Итак, я надеюсь сделать запрос шифрования, который создает связь между максимальным идентификатором и минимальным идентификатором, которые имеют одинаковый номер строки. Таким образом, в основном соединяя конец, с началом. Есть ли умный способ сделать это?

1 Ответ

1 голос
/ 14 января 2020

Вашему вопросу не хватает ясности, но как насчет размышлений в соответствии с приведенными ниже принципами?

// find all levels in your dataset of nodes in the chains
MATCH (n)
WHERE (n)-[:NEXT]-()
WITH COLLECT(DISTINCT n.level) AS levels
UNWIND levels AS level

// for each level, find the chain
MATCH (start {level:level})-[:NEXT*]->(end {level:level})
WHERE NOT (
            ({level:level})-[:NEXT]->(start) 
            OR 
            (end)-[:NEXT]->({level:level})
         )

// connect end to start 
MERGE (end)-[:MYRELTYPE]->(start)
...