2016-01-31 147 views
1

當遍歷樹或圖(在我的情況下是一個DAG)時,我經常看到用於遞歸。 AQL是否支持或計劃在不久的將來得到這種支持?AQL中的遞歸遍歷(ArangoDb)

說我有一個AQL查詢或子查詢(遍歷),並想遞歸調用它。也許它可以包裹在Foxx中嗎?

回答

1

因爲事情站在AQL本身沒有遞歸。 遞歸可以在JavaScript中使用遞歸被包裹在福克斯,例如:

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

希望這會有所幫助。