У меня есть ведомость материалов, представленная в ArangoDB в виде ориентированного ациклического графа. Количество каждой детали в спецификации представлено на краях, в то время как названия деталей представлены ключами узлов. Я хотел бы написать запрос, который проходит вниз по DAG от узла-предка и суммирует количества каждой части по ее имени. Например, рассмотрим следующий график:
Qty: 2 Qty: 1
Widget +------> Gadget +------> Stuff
+ + Qty: 4
| Qty: 1 +---------> Thing
+----------------------------^
Widget
содержит два Gadgets
, каждый из которых содержит один Stuff
и четыре Things
. Widget
также содержит один Thing
. Таким образом, я хотел бы написать запрос AQL, который пересекает граф, начиная с виджета, и возвращает:
{
"Gadget": 2,
"Stuff": 2,
"Thing": 9
}
Я полагаю, что collect aggregate
может быть здесь моим другом, но я еще не нашел нужного заклинания. Отчасти проблема заключается в том, что все дочерние количества детали необходимо умножить на их родительские количества. Как мог бы выглядеть такой запрос, который эффективно выполняет это суммирование для групп DAG глубиной около 10 уровней?