簡體   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