Не слишком сложно: я хочу посчитать края каждого документа и сохранить номер в документе. Я придумал два работающих запроса; К сожалению, поскольку у меня миллионы ребер, оба они довольно медленные. Есть ли более быстрый способ обновить документы с помощью свойства, сохраняющего их количество краев? (просто счет в определенный момент времени)
Запросы AQL, которые работают, но работают медленно:
FOR doc IN Documents
LET inEdgesCount = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'inbound', maxDepth:1})
LET outEdgesCount = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'outbound', maxDepth:1})
UPDATE doc WITH {inEdgesCount: inEdgesCount, outEdgesCount: outEdgesCount} In Documents
or:
FOR e IN Edges
COLLECT docId = e._to WITH COUNT INTO counter
UPDATE SPLIT(docId,'/')[1] WITH {inEdgeCount: counter}
(а затем повторите для исходящих кромок)
Кстати, есть ли способ просмотреть скорость запроса (например, для выполнения в секунду) или процент выполнения? Я пытался судить о скорости, используя для начала ОГРАНИЧЕННЫЕ запросы, но требуемое время, похоже, не масштабируется линейно.