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 Результат
a | b |
---|---|
Node[1]{name:"Charlie Sheen"} | Node[4]{name:"WallStreet",title:"Wall Street"} |
Node[4]{name:"WallStreet",title:"Wall Street"} | Node[1]{name:"Charlie Sheen"} |