Я пробовал это несколькими способами, поэтому я не буду перечислять их все. Позвольте мне объяснить, чего я пытаюсь достичь:
Допустим, у меня есть 3 типа узлов: A, B и C, с возможными направленными ссылками формы (: A) -> (: B) и (: B) -> (: C) и (: C) -> (: C).
То, что я хочу, это узлы B и C, которые приходят на одну и две ссылки от определенного c узла и любых существующих путей, соединяющих два узла C через путь, который сходится на общем узле C.
Во-первых, я хочу вернуть узлы B и C, которые взяты из определенного c экземпляра A, например:
MATCH (a:A)-->(b:B)-->(c:C)
RETURN b,c
Я также хочу включить все пути, для которых множество узлов c
сходятся на общих c
узлах. Что-то вроде
MATCH path=(c)-[*]->(c2:C)<-[*]-(c)
RETURN path
Я пробовал несколько способов и обычно либо теряю узлы (b) и (c), у которых нет такого пути, либо я получаю слишком много (c2) узлы назад, которые не являются частью пути, соединяющего (c) узел с другим (c) узлом (например, если я использую отношения запроса [* 0 ..] в запросе).