从多个源顶点查找最短路径并输出针对目标顶点的每个路径长度总和

问题描述 投票:0回答:1

我编写了下面的 AQL 最短路径遍历查询来查找从一组起始顶点到一组目标顶点的最短路径。

在输出中我想要一个综合结果。意思是,从所有源输出所有目标顶点以及该顶点的总路径长度。如果没有找到从源到目标的路径,则添加默认值,例如 10。

如何修改查询来解决此问题?

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 GrpahName RETURN [v, e]) 
SORT LENGTH(path)
RETURN {
vertex_id: target,
path_len: LENGTH(path)
}
charts arangodb aql graph-traversal
1个回答
0
投票

如果您只想知道路径是否已找到,您可以使用此方法,返回 1 并检查 LENGTH 是否大于 0。

LET path = (
    FOR v, e IN ANY SHORTEST_PATH start TO target GRAPH 'GraphName'
      RETURN 1
)
RETURN {        
    pathLength: LENGTH(path) > 0 ? LENGTH(path) : 10,
}
© www.soinside.com 2019 - 2024. All rights reserved.