如何修改AQL最短路径查询以汇总多源到多目标路径长度总和
修改AQL最短路径查询以计算目标顶点的路径长度总和
你的需求是对每个目标顶点,计算它与所有源顶点的路径长度总和,无路径时默认计入10。可以通过以下方式修改查询:
核心调整点
- 按目标顶点分组,聚合每个目标对应的所有源顶点的路径长度
- 处理无路径场景:当
SHORTEST_PATH返回空结果时,用10替代0作为路径长度 - 使用
SUM函数计算每个目标的路径长度总和
修改后的AQL查询
FOR target IN ["ENTITY_PERSON_ID/d628f984-7ece-3927-97dc-fbc0d8488ffa", "ENTITY_PERSON_ID/d478c57b-bb24-3c20-b09d-e2cd04b54a58", "ENTITY_PERSON_ID/4dacec6f-c14d-3379-b268-97641d4193e3", "ENTITY_PERSON_ID/abbc6fd5-e9fa-375f-b9b3-7eed21e44092"] FOR start IN ["ENTITY_PERSON_ID/88507ee7-d52e-311f-9394-726fa4886819","ENTITY_PERSON_MAILING_ADDRESS_CITY/5b75a553-11ab-3c1f-a7bd-5afc2cb72fdd"] LET path = (FOR v, e IN ANY SHORTEST_PATH start TO target GRAPH GraphName RETURN [v, e]) // 单个源到目标的路径长度,无路径则取10 LET single_len = IF(LENGTH(path) == 0, 10, LENGTH(path)) // 按目标顶点分组,聚合所有源的路径长度 COLLECT vertex_id = target INTO lengths = single_len RETURN { vertex_id: vertex_id, total_path_len: SUM(lengths) }
关键逻辑说明
single_len变量:判断路径是否存在,若LENGTH(path)为0说明无路径,赋值10;否则使用实际路径长度(与原查询逻辑保持一致)COLLECT分组:将同一目标顶点对应的所有源路径长度聚合到数组中SUM(lengths):对每个目标的路径长度数组求和,得到最终的总长度
内容的提问来源于stack exchange,提问作者Bikas Katwal
相关产品推荐
相关产品推荐

