Допустим, существует древовидная структура.
Верхний уровень: склад
Следующий уровень: пространство для хранения
Последний уровень: сохраненный элемент
Я хочу получить количество мест хранения и предметов хранения для каждого склада.
Я уже пытался получить количество сохраненных предметов: это легко сделать с помощью groupCount.
g.V().
hasLabel('Warehouse').
as('w').
out('HAS_SPACE').
hasLabel('Space').
as('s').
out('HAS_ITEM').
hasLabel('Item').
groupCount().by(select('w')).
unfold().
order().by(values, desc).
limit(100).
project('WarehouseName', 'ItemsCount').
by(select(keys).values('Name')).
by(select(values))
Однако я тоже хочу подсчитать «и» и не могу придумать какой-либо быстрый способ добиться этого. Я думал о подсчете обходов примерно как:
g.V().
hasLabel('Warehouse').
project('WarehouseName', 'SpaceCount', 'ItemCount').
by('Name').
by(out('HAS_SPACE').count()).
by(out('HAS_SPACE').out('HAS_ITEMS').count())
, но он работает очень медленно на большом количестве вершин (их около 26M).
Есть ли другой способ получить эторассчитывать?