AQL中的递归遍历(ArangoDb)

时间:2016-01-31 21:40:15

标签: arangodb

当遍历树或图形(在我的情况下是DAG)时,我经常看到递归的用法。在不久的将来,AQL是否支持或计划支持它?

假设我有一个AQL查询或子查询(遍历),并希望以递归方式调用它。它可以用Foxx包裹吗?

1 个答案:

答案 0 :(得分:1)

事实上,AQL本身没有递归。 可以使用JavaScript中的递归将递归包装在Foxx中,例如:

var recursion = function(last) {
  if (last.length > 3) {
    return last;
  }
  return recursion(db._query("<some AQL query>", {last: last}));
}


controller.get("/recursive", function (req, res) {
  res.json(recursion(["a","b","c"]));
}

对于图遍历,我们计划用一些运算符扩展AQL以定义&#34; For All&#34;或者&#34; For Any&#34;在遍历路径上过滤。哪个可以直接处理许多模式。语法可能如下所示:

FOR v,e,p IN 1..12 OUTBOUND "vertex/start" edges
  FILTER p.vertices[*].age ALL >= 35
  RETURN v

除了查找112的所有路径之外,其中所有顶点的age属性都大于或等于35

希望这有帮助。

相关问题