Я ищу эффективный способ получения всех подключенных узлов.Однако есть поворот.Я хотел бы исключить узлы и последующие дочерние элементы, которые связаны определенными типами отношений.
Прикрепленный рисунок иллюстрирует мой случай.
Существует два или более кластеров узлов.Я хотел бы получить все узлы одного кластера, в зависимости от идентификатора внутри запроса.Все остальные узлы (поступающие из разных кластеров) и связанные через отношения «LINK ...», не должны быть включены.
Я знаю, как извлечь все подключенные узлы с помощью:
MATCH (n:MyNode {id : 123})-[*]-(connectedNodes)
RETURN connectedNodes
Фильтрация с предложением WHERE
звучит как плохая идея, потому что она все равно будет извлекатьвесь график.Есть ли что-то внутри процедур APOC, что позволило бы мне что-то сделать таким образом?Большое спасибо уже за вашу помощь.
РЕДАКТИРОВАТЬ 1: Софар Я попробовал первое предложение, данное в комментариях, но время выполнения было недостаточно.Я постараюсь ограничить отношения и типы узлов.Также я попробовал пользовательскую реализацию внутри Python, используя рекурсивную функцию.Пока еще не завершено.
РЕДАКТИРОВАТЬ 2: Предложение @ InverseFalcon сработало как очарование.Сначала отфильтруйте все доступные типы отношений за один раз, которые не должны учитываться, а затем примените процедуру apoc.path.subgraphNodes
с соответствующим начальным узлом и действительными типами отношений.Спасибо.