Если существует конкретное отношение, верните только это - PullRequest
0 голосов
/ 13 февраля 2019

Я новичок в Neo4j.У меня есть график, который представляет все RPM, установленные на хосте, поэтому у меня есть один узел хоста и несколько узлов RPM с отношением «установлен в» между ними.Для этого у меня также есть некоторые отношения RPM-> RPM для зависимостей RPM.Таким образом, это отношение "Зависит от" между двумя узлами RPM.

Я хочу отобразить весь свой график (с ограничением) в браузере Neo4j.Но поскольку зависимость также установлена ​​на хосте, отношение «установлено в» все еще отображается для зависимостей и подключается к узлу хоста.Это делает весь график намного труднее для чтения.

Я бы хотел сохранить только отношение «зависит от» для зависимостей и замаскировать отношение «установлен в».Я буду отображать отношение «установлен в» только для RPM верхнего уровня, которые не являются зависимостью для другого RPM.

Возможно ли иметь запрос, который говорит что-то подобное?

  • если присутствует отношение A, отображается только A, иначе отображаются все

Редактировать:

У меня много данных (из эластичного поиска), много RPM и только один хост,Мне бы хотелось, чтобы хост всегда присутствовал на графике, независимо от установленного предела (в основном я хочу, чтобы хост был первым узлом)

1 Ответ

0 голосов
/ 13 февраля 2019

1) Добавить данные испытаний:

CREATE (N:Host)
CREATE (P1:RPM)
CREATE (P2:RPM)
CREATE (P3:RPM)
CREATE (P1)-[r1:`installed in`]->(N)
CREATE (P2)-[r2:`installed in`]->(N)
CREATE (P3)-[r3:`installed in`]->(N)
CREATE (P2)-[r4:`depends on`]->(P3)
RETURN *

2) И использовать CASE:

MATCH (P:RPM)-[r1:`installed in`]->(:Host)
OPTIONAL MATCH (P)-[r2:`depends on`]->(:RPM)
WITH CASE WHEN r2 IS NULL 
          THEN r1 
          ELSE r2 
     END as relation
RETURN startNode(relation) as rpmNode,
       relation,
       endNode(relation) as relatedNode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...