Я хочу вернуть все узлы и б, где б не ниже по потоку от в через любой путь, который начинается с соотношением отн , Я продолжаю находить себе того, чтобы написать одно условие для случая, когда связана непосредственно с б через отн, и один для непрямого случае, что приводит к чему-то вроде этого:Шифр: Количественная над ноль или более узлов-то-отношения
//Semi-pseudo-code.
match (a)-[*]->(b)
optional match dir=(a)-[:rel]->(b)
optional match indir=(a)-[:rel]-()-[*]->(b)
where length(dir)=0
and length(indir)=0
return a,b
Есть любой более простой способ? На самом деле я хочу что-то вроде этого, где голые квантор означает «ноль или более узлов-то-отношения»:
match (a)-[*]->(b)
match not (a)-[:rel]-*->(b)
return a,b
Примечание: Я подозреваю, что это может в корне быть такой же, как мой последний вопрос: Cypher: Matching nodes at arbitrary depth via a strictly alternating set of relations
Благодарим за ответ. Но не будет ли ваш код по-прежнему соответствовать прямому делу ?: (a) - [: rel] -> (b) Мне нужно исключить это. (Или я неправильно понял?) –
Хорошая точка - [отношения переменной длины] (https://neo4j.com/docs/developer-manual/current/cypher/#_variable_length_relationships) по умолчанию значение 'minHops' равно 1. Я исправил запрос и добавит пример через минуту. –