Cypher Traverse tree в одном запросе - PullRequest
0 голосов
/ 31 мая 2019

Предположим, у вас есть следующий макет. Корневой узел, известный как «группа», может быть найден следующим образом:

MATCH (g: Group {key: $groupKey}) RETURN g;

И серия сообщений, принадлежащих группе:

MATCH (g: Group {key: $groupKey})-[r: Owns]->(m: Message) RETURN m;

И каждое сообщение может иметь много ответов, также представленных как сообщения

MATCH (m: Message {key: $messageKey})-[r: Owns]->(reply: Message) RETURN reply;

Вопрос в том, как в одном запросе вы переходите от g, чтобы получить график всех сообщений и их ответов. Предположим, что круговых путей не существует.

1 Ответ

2 голосов
/ 31 мая 2019

Этот запрос будет возвращаться каждые Message в дереве с корнем в g.

MATCH (g:Group {key: $groupKey})-[:Owns*]->(m:Message)
RETURN g, COLLECT(DISTINCT m) AS messages;
...