[英]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
然后,它将找到长度为1
到12
所有路径,其中所有顶点的age
属性大于或等于35
。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.