neo4j рекурсивное количество узлов - PullRequest
0 голосов
/ 05 мая 2020

В моем проекте мне нужно посчитать размер моего узла. Размер узла - это количество соединений с другими узлами до глубины 2. В настоящее время я могу сделать это с помощью двух запросов: 1. Получить идентификаторы всех узлов с определенными метками:

MATCH (n:Target) RETURN n.Key WHERE <some_where_logic_here>

2. Использовать возвращенный список ключей для подсчета

MATCH (n)-[r *0..2]-(b) WHERE n.Key in {keyList} RETURN n.Key as targetId, count(r) as cnt

Это работает, однако мне интересно, могу ли я получить те же результаты только с одним запросом? (как дополнительный выбор в SQL)

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Вы должны уметь делать все с помощью одного MATCH. Например:

MATCH (n:Target)
WHERE <some_where_logic_here> AND n.Key in $keyList
RETURN n.Key as targetId, SIZE((n)-[*0..2]-()) as cnt
0 голосов
/ 05 мая 2020

Можете попробовать это?

MATCH (n:Target)
WHERE <some_condition>
WITH n
MATCH (n)-[r *0..2]-(b)
RETURN n.Key as targetId, count(r) as cnt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...