繁体   English   中英

AQL(ArangoDb)中的递归遍历

[英]Recursive traversal in AQL (ArangoDb)

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

假设我有一个AQL查询或子查询(遍历),并且想递归调用它。 可以用Foxx包装吗?

就目前情况而言,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,以在遍历路径上定义“全部”或“任何”过滤器。 可以直接处理许多模式。 语法可能看起来像:

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

然后,它将找到长度为112所有路径,其中所有顶点的age属性大于或等于35

希望这可以帮助。

暂无
暂无

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

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