У меня есть иерархия отношений узлов, как -
Организация -> Отдел -> Система -> Функция -> Порт -> Запрос -> Ответ -> Параметр
Запрос -
MATCH q=(p)-[*]->(b:checkoutby) WHERE p.name ="william" RETURN q
дает всю сеть, принадлежащую родительскому узлу -> william до последнего упомянутого узла -> checkoutby.
Однако,
Я хочу, чтобы отображались только два связанных узла.
Я попробовал запрос -
MATCH (n:william) WHERE n is null RETURN n UNION MATCH n=(p)-
[:Parameter]->(b) WHERE
b.name ="checkoutBy" RETURN n
Но здесь эффект узла Уильям, т.е. первыйродительский узел обнуляется, и мы получаем вывод независимо от родительского узла.
Для которого я даже попробовал этот запрос -
MATCH (n) WHERE none(node in nodes(n) WHERE node:william) RETURN n
UNION MATCH n=(p)--()-[:Parameter]->(b) WHERE b.name ="cabinet"
RETURN n
, но я получаю ошибку -
Neo.ClientError.Statement.SyntaxError: Несоответствие типов: ожидаемый путь, но был узел (строка 1, столбец 36 (смещение: 35)) "МАТЧ (n) ГДЕ нет (узел в узлах (n) ГДЕ узел: william)RETURN n UNION MATCH n = (p) - () - [: Parameter] -> (b) WHERE b.name = "cabinet" RETURN n "
Я даже попробовалзапрос на пересечение, но безрезультатно.
MATCH (n1:william), (n2),(q:cabinet)
WHERE (n1)<-[:Department]-() AND (n2)<-[:Parameter]-(q)
RETURN count(q), collect(q.name)
Предупреждение об ошибке-
Этот запрос строит декартово произведение между несвязанными образцами.
Если часть запроса содержит несколько несвязанных шаблонов, это создаст декартово произведение между всеми этими частями.Это может привести к большому объему данных и замедлить обработку запросов.Несмотря на то, что он иногда предназначен, часто может быть возможно переформулировать запрос, избегающий использования этого перекрестного продукта, возможно, путем добавления взаимосвязи между различными частями или с помощью OPTIONAL MATCH (идентификатор: (n2))
EXPLAIN MATCH (n1:william), (n2),(ego:cabinet)
^
Даже этот запрос не работает -
MATCH (n:william) RETURN n UNION MATCH n=(p)-[:Parameter]->(b)
WHERE b.name ="checkoutBy"
call apoc.path.expandConfig(n, {labelFilter:'-william'}) yield path
return path
Пожалуйста, помогите.Я хочу получить извлекаемый / кабинетный узел, только если он находится на верхнем родительском узле - william