Neo4J - Как исключить узлы с собственной ссылкой в ​​allShortestPaths? - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь найти все кратчайшие пути заданной длины. Ниже приведен запрос, который я использую:

match (n:Person{email:'sam@gmail.com'}),
(k:Person{email:'joseph@gmail.com'}),
paths=allShortestPaths((n)-[r:CONNECTED_TO*..2]->(k))
where length(paths)=2
with collect(paths) as path
unwind path as p
return nodes(p) as nodes,rels(p) as relations

Проблема в том, что у меня есть узлы с собственной ссылкой в ​​базе данных вида

(n:Person{email:'sam@gmail.com'})-[:CONNECTED_TO]->
(n:Person{email:'sam@gmail.com'})

Я хочу исключить эти пути в моем запросе кратчайшего пути. Кто-нибудь может направить меня в правильном направлении.

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете добавить предикат в предложении WHERE после вызова по кратчайшему пути, чтобы исключить их:

match (n:Person{email:'sam@gmail.com'}),
(k:Person{email:'joseph@gmail.com'}),
path=allShortestPaths((n)-[:CONNECTED_TO*..2]->(k))
where length(path) = 2 and none(rel in relationships(path) where startNode(rel) = endNode(rel))
return nodes(path) as nodes, relationships(path) as relations
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...