Это будет немного зависеть от того, сколько информации вам нужно от узлов, для которых вы хотите подсчитать, и от того, хотите ли вы получить отчетливые результаты или нет.
Если разные результаты не нужны, и вам не нужно выполнять дополнительную фильтрацию для отношения или узла на другом конце (без фильтрации метки или свойств узла), тогда вы можете использовать размер ( ) шаблона, который будет использовать информацию о степени взаимосвязей, присутствующих в узле, что более эффективно, поскольку вам никогда не придется расширять взаимосвязи:
MATCH (u:WorkstationUser {id: "alw:44807"})
WITH u, size((u)-[:HAS_ACCESS_TO]->(p)) as total
MATCH (u)-[:HAS_ACCESS_TO]->(p)
RETURN p, total
SKIP 0 LIMIT 10
Однако, если требуются разные результаты или вам необходимо отфильтровать узел по метке или свойствам, вам придется расширить все результаты, чтобы получить итоговые значения. Если результатов не так много (миллионы или миллиарды), вы можете собрать отдельные узлы, получить размер коллекции, а затем РАССМОТРЕТЬ результаты и страницу:
MATCH (:WorkstationUser {id: "alw:44807"})-[:HAS_ACCESS_TO]->(p)
WITH collect(DISTINCT p) as pList
WITH pList, size(pList) as total
UNWIND pList as p
RETURN p, total
SKIP 0 LIMIT 10