[英]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.