Neo4J - получить все пути без повторяющегося типа отношения или метки узла - PullRequest
0 голосов
/ 09 февраля 2019

Из данного узла мне нужно вернуть все пути переменной длины без повторяющегося типа отношения или метки узла.

Например:

(:A)-[:r1]-(:B)

(:A)-[:r1]-(:C)-[:r2]-(:D)-[:r3]-(:E)

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Это было разработано для меня несколькими замечательными людьми в Neo4J.Это требует APOC.

MATCH p=(:StartingPoint)-[*1..3]->() WHERE size(apoc.coll.duplicates([x in relationships(p) | type(x)]))=0 AND size(apoc.coll.duplicates(apoc.coll.flatten([x in nodes(p) | labels(x)])))=0 RETURN p
0 голосов
/ 10 февраля 2019

Я не думаю, что вы сможете использовать Cypher для оценки этого во время обхода, и мне кажется, что фильтрация после получения всех путей не будет эффективной (хотя, возможно, с древовидной структурой).

Лучше всего реализовать собственную пользовательскую процедуру для этого, используя API обхода .

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