Как l oop через узлы для определенной метки c и показать, сколько отдельных узлов подключается к ней (Neo4j) - PullRequest
0 голосов
/ 13 февраля 2020

Привет, я использую neo4j в качестве базы данных. Я хочу сделать это в браузере neo4j: с учетом метки (например, Case) выясните для каждого узла, который принадлежит этой метке, сколько отдельных узлов (принадлежит другой метке) соединяют ее.

I пытался это:

MATCH (e1:Event) - [hc1:HAS_CASE] -> (c:Case) <- [hc2 :HAS_CASE] - (e2:Event) WHERE e1.eventId <> e2.eventId RETURN c

, чтобы вывести список всех c, к которым подключены два разных узла.

Но каждый раз, когда я запускал это, браузер neo4j падал. Я думаю, что этот запрос может быть очень много памяти и времени. Так что же для этого нужно сделать?

1 Ответ

1 голос
/ 13 февраля 2020

Вы можете использовать агрегирующую функцию COUNT, чтобы найти количество отдельных Event узлов, имеющих отношение HAS_CASE, направленных на каждый Case узел.

Для пример:

MATCH (c:Case)
OPTIONAL MATCH (c)<-[:HAS_CASE]-(e:Event)
RETURN c, COUNT(DISTINCT e);

Второй MATCH равен OPTIONAL, поэтому вы все равно получите результат для Case узлов, с которыми нет связанных событий.

ПРИМЕЧАНИЕ: Опция DISTINCT необходима только в том случае, если для узла Case возможно наличие нескольких связей HAS_CASE с одним и тем же экземпляром Event узла.

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