Как собрать свойства отношения переменной длины - PullRequest
1 голос
/ 02 июня 2019

Я могу получить свойства из всех отношений, которые удовлетворяют простому шаблону (длина 1), например:

MATCH ()-[r:RELATIONSHIP]->() RETURN collect(r.id)

, но не могут получить свойства отношений переменной длины, такие как:

MATCH ()-[r:RELATIONSHIP*]->() RETURN collect(r.id)

Любая помощь будет оценена.

Сообщение об ошибке: Neo.ClientError.Statement.SyntaxError: Несоответствие типов: ожидаемое Любое, Карта, Узел, Отношение, Точка, Продолжительность, Дата,Время, LocalTime, LocalDateTime или DateTime, но было List

1 Ответ

0 голосов
/ 02 июня 2019

В простом шаблоне (фиксированная длина 1) переменная r равна только одному отношению , но в случае шаблонов переменной длины переменная r представляет собой список отношений .

Ваш первый запрос правильный, но во втором запросе вы пытаетесь получить свойство id из List вместо того, чтобы получать его от определенного relationship.

Вы можете изменить свой запрос, чтобы получить свойства из списка следующим образом:

MATCH ()-[r:RELATED_TO*2]->() 
UNWIND  r as rel
RETURN COLLECT(DISTINCT id(rel))

Над шаблоном (Связывание связей со списком в шаблоне переменной длины устарело) устарело и будет удалено в будущих версиях.

Рекомендуемый способ - привязать весь путь к переменной, а затем извлечь отношения:

MATCH path=()-[:RELATED_TO*2]->()
UNWIND relationships(path) AS  rel
RETURN COLLECT(DISTINCT id(rel))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...