Neo4j / Cypher: подсчет различных комбинаций узлов, соответствующих шаблону - PullRequest
0 голосов
/ 23 мая 2019

Я запрашиваю пути в графе Neo4j.Путь содержит более двух узлов.Я хочу посчитать отдельные случаи двухузлового подпути.

Итак, в следующем примере я хочу узнать количество результирующих строк:

MATCH ()-->(n1:Label1)-->(n2:Label2)-->()
RETURN DISTINCT n1, n2

Например, что-то вроде

RETURN count(DISTINCT n1, n2)

(что будет работать для одногоузел: RETURN count(DISTINCT n1))

Как я могу сделать это в Cypher?

1 Ответ

1 голос
/ 24 мая 2019

Сделайте это, чтобы узнать, сколько раз встречается каждая отдельная комбинация n1 и n2:

MATCH ()-->(n1:Label1)-->(n2:Label2)-->()
RETURN n1, n2, COUNT(*);

Агрегирующие функции подобно COUNT используют неагрегирующие элементы в том же предложении WITH или RETURN в качестве уникальных «ключей группировки» (поэтому не нужно использовать DISTINCT).

[UPDATE]

Чтобы получить количество различных комбинаций n1 и n2, вы можете агрегировать дважды в этом несколько хакерском запросе:

MATCH ()-->(n1:Label1)-->(n2:Label2)-->()
WITH n1, n2, COUNT(*) AS ignored
RETURN COUNT(*) AS nCombos;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...