Обновленный ответ ...
MATCH (n:Field)
OPTIONAL MATCH (n)-[:RELATES_TO*0..2 {predicate: 'has field'}]->(:Field)<-[:RELATES_TO {predicate: 'has field'}]-(p:Blue)
RETURN n.my_id AS field_id, n.label AS field, count(p) AS num
И вы должны определить вторую метку узла, который вы хотите считать (в конце концов, это может быть Field
.
И вам нужно сделать градусы отсчитываемыми, но они должны быть ограничены на некоторой глубине, например ..2
.
Найти все Field
, которые RELATE_TO
Blue
(составил этот ярлык, я сделал не видеть это в вашем примере) не более двух прыжков и вернуть счетчики для каждого поля.
MATCH (n:Field)-[:RELATES_TO*..2]->(p:Blue)
RETURN n.my_id AS field_id, n.label AS field, count(p) AS num
Или, если вы хотите, чтобы все поля были даже
MATCH (n:Field)
OPTIOANL MATCH (n)-[:RELATES_TO*..2]->(p:Blue)
RETURN n.my_id AS field_id, n.label AS field, count(p) AS num