10.1.4.6. Пути нулевой длины

Использование путей переменной длины, которые имеют нижнюю границу нулевой, означает, что два идентификатора могут указывать на один и тот же узел. Если расстояние между двумя узлами является нулевым, они по определению есть один и тот же узел. Заметим, что при сопоставлении путей нулевой длины результат может содержать соответствие, даже если не используется сопоставление по типу связи.

Запрос

MATCH (wallstreet:Movie { title:'Wall Street' })-[*0..1]-(x)
RETURN x

возвращает все узлы отстоящие нулевую или одну связь от Wall Street.

Таблица 10.15 Результат

x
Node[4]{name:"WallStreet",title:"Wall Street"}
Node[1]{name:"Charlie Sheen"}
Node[2]{name:"Martin Sheen"}
Node[6]{name:"Michael Douglas"}
Node[0]{name:"Oliver Stone"}

10.1.4.7 Именованный путь

Если вы хотите вернуть путь или применить фильтр пути к вашему образцу графа, можно ввести именованный путь.

Запрос

MATCH p =(michael { name:'Michael Douglas' })-->()
RETURN p

возвращает два пути, начинающиеся от Michael.

Таблица 10.16 Результат

p
[Node[6]{name:"Michael Douglas"},:ACTED_IN[2]{},Node[4]{name:"WallStreet",title:"Wall Street"}]
[Node[6]{name:"Michael Douglas"},:ACTED_IN[4]{},Node[3]{name:"TheAmericanPresident",title:"The American President"}]

10.1.4.8 Сопоставление на связи с границами

Когда ваш образец содержит связь с границами, и в образце связи не указано направление, Cypher будет пытаться сопоставлять связь в обоих направлениях.

Запрос

MATCH (a)-[r]-(b)
WHERE id(r)= 0
RETURN a,b

возвращает два связанных узла, один раз как начальный узел, а потом – как конечный.

Таблица 10.17 Результат

ab
Node[1]{name:"Charlie Sheen"}Node[4]{name:"WallStreet",title:"Wall Street"}
Node[4]{name:"WallStreet",title:"Wall Street"}Node[1]{name:"Charlie Sheen"}

Предыдущая | Следующая