繁体   English   中英

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

[英]ArangoDB : how to do a shortest_path filtering on edges

我正在使用ArangoDB 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}和LIMIT 1

那么,有人能告诉我我可以做什么类型的AQL查询吗? 根据建议,我写这个:

FOR n,e IN 1..3 ANY'city / rome'GRAPH'CityGraph'OPTIONS {bfs:true} FILTER e.filterProperty IN ['FIRST','SECOND'] LIMIT 1 return {n,e}

但它只返回图形深度的第一级,而不是n的深度。

先感谢您。

最好的祝福,

丹尼尔

使用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}
  • 过滤所有边以使filterProperty为FIRSTSECOND ,如果没有传递这两个边之一的边,则丢弃此路径。
  • 最短路径的末端节点是turin

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM