return n.name, count(distinct n.name)
означает «вернуть каждое отдельное значение n.name
и его количество различных значений». Число должно всегда быть 1, так как отличное значение, очевидно, различно.
Если вы на самом деле ищете количество раз, когда у каждого человека были исходящие отношения с фильмом, название которого указано в $mycollection
, сделайте это вместо этого (где count(*)
подсчитывает количество совпадений с данным n.name
):
MATCH (n:person)-->(m:movie)
WHERE m.Title in $mycollection
RETURN n.name, count(*);
Обратите внимание, что в приведенном выше запросе пропущен шаблон [watched]
, найденный в вашем запросе, поскольку этот синтаксис (без двоеточия до watched
) вообще не фильтрует. Он просто присваивает отношение переменной с именем watched
, но эта переменная не используется иным образом и поэтому является излишней.
Если вы намеревались использовать watched
в качестве типа отношения, сделайте это вместо:
MATCH (n:person)-[:watched]->(m:movie)
WHERE m.Title in $mycollection
RETURN n.name, count(*);
Этот измененный запрос возвращает количество раз, когда каждый человек смотрел фильм с заголовком $mycollection