Neo4j MATCH-запрос для соединения между 3 узлами с различными отношениями - PullRequest
0 голосов
/ 31 октября 2018

У меня есть ниже узлы и отношения между ними.

A[name]    B[language]     C[Dependency]
John       Python          ML
Steven     Java            Tomcat
Jane       Scala           Spark
Roger      DB              SQL
Peter      Java            SQL
Rats       Scala           kafka
Ronny      Cobol           Tomcat


A-[:works_on]->B
B-[:works_with]->C
A-[:knows]->C

Я пытаюсь получить график, который показывает только те узлы, которые имеют все соединения, такие как -A --- B --- C --- A только отдельные значения, никаких других независимых соединений. Для этого я использую запрос ниже:

MATCH (A)-[:works_on]->(B)-[:works_with]->(C) WHERE A.name = 'Peter' AND B.language = 'Java' Return A,B,C

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

Desired graph-
Peter----Java---SQL---Peter
Actual graph-
Peter---Java---SQL & Tomcat---Peter

1 Ответ

0 голосов
/ 31 октября 2018

Возвращает образец, который нашел МАТЧ:

MATCH p=(a:A)-[r:works_on]->(b:B)-[s:works_with]->(c:C)<-[t:knows]-(a:A)
WHERE a.name = 'Peter' 
AND b.language = 'Java' 
Return p

Давая одну и ту же переменную a двум узлам, вы добавляете ограничение на то, что оба узла должны быть одинаковыми для данного шаблона.

Например, с графиком ФИЛЬМЫ:

MATCH p=(a:Person)-[r:ACTED_IN]-(b:Movie)-[s:DIRECTED]-(a:Person)
RETURN p

movies query

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