Почему путь нулевой длины не находит соответствия при использовании метки? - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть этот запрос:

MATCH at = (root)<-[:ATTRIBUTE_OF*0..1]-() RETURN at;

Это возвращает 3 узла, но:

MATCH at = (root)<-[:ATTRIBUTE_OF*0..1]-(:Attribute) RETURN at;

возвращает ноль узлов.

Какая разница, не должно быть то же самое?

1 Ответ

0 голосов
/ 24 сентября 2019

Не совсем то же самое.

В вашем первом запросе он будет соответствовать root узлу (любой узел на самом деле), и каждый путь at будет по крайней мере включать сам узел (безотношения, для части * 0), но вы также получите путь назад для каждого отношения: ATTRIBUTE_OF, которое существует на узле (для части * 1).

Второй запрос аналогичен, но онтребует, чтобы узел в конце был: узлом атрибута.Для случаев * 0 root и другие узлы одинаковы (обход отношений 0 означает, что ваш начальный и конечный узлы одинаковы), поэтому потребуется, чтобы root был узлом: Attribute.

Поскольку вы не получаете результаты обратно, мы можем заключить, что на вашем графике нет узлов: Attribute.

Если это поможет, прочитайте запрос в другом направлении: начиная с узла: Attribute, вернитеall: отношения ATTRIBUTE_OF длиной 0 или 1 с узлом (который мы будем обозначать как root) и возвращают найденные пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...