У меня есть три начальных узла, возвращающие пути p1,p2,p3
, которые все заканчиваются на общем узле com
. Все узлы в трех путях имеют метку type
. Ноль или более узлов в каждом пути имеют второй тип метки file
. Я хочу найти все file
узлы, которые являются родителями узла com
, которые не находятся в путях p1,p2,p3
.
MATCH p1=(s1:type{id:882591})-[:sub*0..35]->(com:type{id:882680})
MATCH p2=(s2:type{id:541990})-[:sub*0..35]->(com)
MATCH p3=(s3:type{id:542007})-[:sub*0..35]->(com)
WITH com, collect(p1) as pa, collect(p2) as pb, collect(p3) as pc
OPTIONAL MATCH (f:file)-[:sub*0..35]->(com)
WHERE NOT f IN pa AND NOT f IN pb AND NOT f IN pc
RETURN DISTINCT f limit 100
Это самый близкий, который я получил, но он по-прежнему возвращает все file
узлы, которые являются родителями com
- даже те, которые находятся в путях. Первые узлы и последний узел com
каждого пути никогда не будут иметь метку file
, если их быстрее удалить. Спасибо за помощь!