首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArangoDB :如何对边缘进行shortest_path过滤

ArangoDB :如何对边缘进行shortest_path过滤
EN

Stack Overflow用户
提问于 2016-09-01 15:53:28
回答 1查看 993关注 0票数 3

我正在使用AQL 3.0,我想创建一个AQL查询,以获得从A到B的最短路径,其深度= 3,过滤一些边缘属性。

查询的"ArangoDB 2.0“版本如下:

代码语言:javascript
复制
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的深度。

提前谢谢你。

诚挚的问候,

丹妮尔

EN

回答 1

Stack Overflow用户

发布于 2016-09-02 16:03:26

使用LIMIT 1,您可以指定将AQL的结果集限制为获得最短路径。

上述查询的翻译应该如下所示:

代码语言:javascript
复制
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}
  • 您筛选所有边缘,使其具有filterProperty或FIRSTSECOND,如果传递一个没有这两个边的边缘,则该路径将被丢弃。
  • 最短路径的末端节点是turin
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39276025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档