Как найти количество различных узлов между одним узлом определенной метки и всеми остальными узлами другой метки в neo4j? - PullRequest
0 голосов
/ 13 июля 2020

У меня есть 4 разных типа меток и несколько узлов в каждом. Скажем, узел A метки P подключен к нескольким узлам метки Q, и эти узлы подключены к нескольким узлам метки R. напрямую или через этикетку Q.

1 Ответ

1 голос
/ 13 июля 2020

Это должно работать:

MATCH path = (a:P)-[*1..2]->(r:R)
WHERE a.id = 'A' AND (LENGTH(path) = 1 OR 'Q' IN LABELS(NODES(path)[1]))
RETURN DISTINCT r

Этот простой пример предполагает последовательную направленность отношений «вперед» для обоих отношений.

[ДОБАВЛЕНИЕ]

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

MATCH path = allShortestPaths((a:P)-[*1..2]->(r:R))
WHERE a.id = $resource_key AND (LENGTH(path) = 1 OR 'Q' IN LABELS(NODES(path)[1]))
RETURN COUNT(DISTINCT r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...