У меня есть иерархия узлов, подобная следующей, где узлы c1..c6 имеют тип: Категория, а их подузлы i1..i7 имеют тип: Элемент.
Что мне нужно получить, так это количество предметов в каждой категории, включая их подкатегории. Вывод должен выглядеть так:
category childCount itemCount
c1 5 7
c2 2 4
c3 1 3
c4 0 2
c5 0 1
c6 0 2
В настоящее время у меня есть запрос, который возвращает правильное количество дочерних узлов, но количество элементов отображается только для каждого узла, а не суммируется. Не уверен, что я что-то упускаю здесь, или это не правильный подход?
Важно отметить, что я не могу полагаться на указание начального узла самостоятельно, так как он может меняться со временем внутри базы данных, поэтому запрос должен начинаться с узла категории, у которого нет родителя.
MATCH p = (c:Category)-[:IS_PARENT_OF *0..]->(c)
WITH c, apoc.text.join("1" + [rel in relationships(p) | rel.index], '.') as path, size((:Category)<-[:IS_PARENT_OF*]-(c)) as childCount, size((:Item)-[:IS_CATEGORIZED_AS]->(c)) as itemCount, c.name AS name
ORDER BY path
RETURN name, childCount, itemCount
Вывод как сейчас:
category childCount itemCount
c1 5 0
c2 2 1
c3 1 1
c4 0 2
c5 0 1
c6 0 2