我正在使用AQL 3.0,我想创建一个AQL查询,以获得从A到B的最短路径,其深度= 3,过滤一些边缘属性。
查询的"ArangoDB 2.0“版本如下:
FOR e IN GRAPH_SHORTEST_PATH('CityGraph', 'city/rome', 'city/turin',
{
edgeExamples: [{filterProperty: 'FIRST'}, {filterProperty: 'SECOND' }]}
)我阅读了关于arangoDB 3.0 (https://docs.arangodb.com/3.0/AQL/Graphs/ShortestPath.html)的文档,它说:
条件最短路 SHORTEST_PATH计算只能找到一条无条件的最短路径。有了这个构造,就不可能定义这样的条件:“找到所有边都是X类型的最短路径”。如果要执行此操作,请使用普通遍历,并使用选项{bfs: true}和限制1相结合。
那么,有人能告诉我我能做什么类型的AQL查询吗?根据这些建议,我写到:
对于n,e IN 1.3任何‘城市/罗马’图'CityGraph‘选项{bfs:真}过滤e.filterProperty在’第一‘,’第二‘限制1返回{n,e}
但是它只返回图深度的第一级,而不是n的深度。
提前谢谢你。
诚挚的问候,
丹妮尔
发布于 2016-09-02 16:03:26
使用LIMIT 1,您可以指定将AQL的结果集限制为获得最短路径。
上述查询的翻译应该如下所示:
FOR n, e, p IN 1..3 ANY 'city/rome'
GRAPH 'CityGraph'
OPTIONS {bfs: true}
FILTER p.edges[*].filterProperty ALL IN ['FIRST', 'SECOND']
FILTER n._key == 'turin'
LIMIT 1
RETURN {n, e}FIRST或SECOND,如果传递一个没有这两个边的边缘,则该路径将被丢弃。turin。https://stackoverflow.com/questions/39276025
复制相似问题