Neo4j: Найти узлы, которые связаны со ВСЕМИ узлами в списке - PullRequest
0 голосов
/ 08 июня 2018

Допустим, у меня есть запрос на совпадение, который возвращает список узлов (oms), и затем я сопоставляю узлы (rs), которые связаны с (oms), но я хочу, чтобы они были только в том случае, если один узел (rs) имеетотношение ко ВСЕМ или БОЛЕЕ из списка, который я возвратил ранее (oms).Вот как выглядит мой запрос:

MATCH (st:Route) WHERE id(st) = 0
MATCH (st)--(rs:RS)--(oms:OMS)
WITH st,rs, collect(oms) AS omsList

MATCH (ed:Route)--(rs2:RS)
WHERE ALL(x in omsList WHERE (rs2)--(x))
UNWIND omsList AS oms

RETURN *

И вот что дает мой запрос:

Query results

Но, как объяснено извыше, я не хочу узлы 20 и 21, потому что они не имеют отношения ко ВСЕМ узлам, возвращенным из списка.

Примечание. Я начинаю с узла 0, который заканчивается узлами (oms) 4 и 2Поэтому я хочу их только в том случае, если они имеют отношение к ОБА 4 И 2.

Как бы я запросил это так, как я хочу?

1 Ответ

0 голосов
/ 08 июня 2018

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

Чтобы отключить это поведение, перейдите в раздел «Визуализация графика» в настройках браузера Neo4j.и снимите флажок «Соединить узлы результата», как показано на рисунке ниже:

Graph visualization option

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