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