Соединение конца набора с началом

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

Путь к узлу

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

Всего 1 ответ


Вашему вопросу не хватает ясности, но как быть с размышлениями, изложенными ниже?

// 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)

Есть идеи?

10000