У меня есть иерархия узлов, подобная следующей, где узлы c1..c6 имеют тип: Категория, а их подузлы i1..i7 имеют тип: Item.
Что мне нужно получить, так это количество предметов в каждой категории, включая их подкатегории. Вывод должен выглядеть следующим образом:
category childCount itemCount
c1 5 7
c2 2 4
c3 1 3
c4 0 2
c5 0 1
c6 0 2
В настоящее время у меня есть запрос, который возвращает правильное количество дочерних узлов, но количество элементов отображается только для каждого узла, а не суммируется в общем. Не уверен, что я что-то здесь упускаю, или это неправильный подход?
Важно отметить, что я не могу полагаться на указание начального узла самостоятельно, поскольку он может со временем меняться внутри БД, поэтому запрос должен начинаться с узла Category, у которого нет родителя.
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