簡體   English   中英

計算AQL中遍歷的不同節點

[英]Count distinct nodes from traversal in AQL

我可以從查詢中獲取所有不同的節點,但不能計數:

FOR v in 2..2 OUTBOUND "starting_node" GRAPH "some_graph"
return DISTINCT v._key

我只想得到結果的計數。 我嘗試按照docs中的建議使用LENGTH(DISTINCT v._key) ,但這不是AQL的正確語法:

語法錯誤,“ DISTINCT v._key)附近有意外的DISTINCT修飾符”

天真的解決方案是獲取所有密鑰並在客戶端進行計數,但是我很好奇如何在服務器端進行操作?

RETURN DISTINCT作用是刪除重復值 ,但僅遍歷之后才刪除。

您可以設置遍歷選項以消除遍歷過程中的路徑,這會更加有效,尤其是當您具有高度互連的圖形和較高的遍歷深度時:

RETURN LENGTH(
  FOR v IN 2..2 OUTBOUND "starting_node" GRAPH "some_graph"
  OPTIONS { uniqueVertices: "global", bfs: true }
    RETURN v._key
)

遍歷選項uniqueVertices可以設置為"global"這樣就不會從該遍歷中兩次返回相同的頂點。 需要啟用廣度優先搜索 bfs的選項才能使用uniqueVertices: "global" 深度優先搜索不支持此唯一性選項的原因是結果不確定,因此此組合被禁用。

受此博客文章http://jsteemann.github.io/blog/2014/12/12/aql-improvements-for-24/的啟發,我使用LET准備了解決方案:

LET result = (FOR v in 2..2 OUTBOUND "starting_node" GRAPH "some_graph"
                  return DISTINCT v._key)
RETURN LENGTH(result)

它可能不是最佳解決方案,但可以按我預期的那樣工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM