У меня есть следующие обстоятельства:
Два типа узлов; NodeA
и NodeB
. NodeB
имеет множество различных меток (например, [LABEL_i, LABEL_j, etc...]
), и я хочу найти количество отношений (скажем, LIKES
) от NodeA
до NodeB
для каждой метки на NodeB
.
Для одного ярлыка я могу сделать следующее:
MATCH (a:NodeA {uid: "<id>"})-[r:LIKES]-(b:NodeB:LABEL_i) RETURN count(b) as count
Для которого я получаю число связей с NodeB
с меткой LABEL_i
.
Я должен быть в состоянии объединить вышеупомянутую логику в один запрос к Neo4j, но я не могу заставить его работать, я попробовал следующие подходы (только поля в ответе):
MATCH (a:NodeA {uid: "<id>"})-[r:LIKES]-(b:NodeB) RETURN DISTINCT LABELS(b), count(b), SIZE(LABLES(b))
Но данные, которые я получил от этого, были не тем, чего я ожидал или нуждался, и я не могу найти другие подходящие подходы, вот что я тоже попробовал
FOREACH (lab in ["LABEL_i", "LABEL_j"] |
MATCH (a:NodeA {uid: "<id>"})-[r:LIKES]-(b:lab) RETURN count(b) as count
)
Neo.ClientError.Statement.SyntaxError: Invalid use of MATCH inside FOREACH (line 2, column 3 (offset: 49))
Любая помощь в написании этого запроса будет высоко оценена, я только недавно начал использовать Neo4j.