我能够从查询中获取所有不同的节点,但不能获取计数:
FOR v in 2..2 OUTBOUND "starting_node" GRAPH "some_graph"
return DISTINCT v._key
我只想获取结果计数。我尝试将LENGTH(DISTINCT v._key)
用作suggested in the docs,但这不是AQL的正确语法:
语法错误,“ DISTINCT v._key)”附近出现意外的DISTINCT修饰符
幼稚的解决方案是获取所有密钥并在客户端进行计数,但是我很好奇如何在服务器端进行操作?
答案 0 :(得分:1)
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"
。 深度优先搜索不支持此唯一性选项的原因是结果不确定,因此此组合被禁用。
答案 1 :(得分:0)
受此博客文章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)
这可能不是最佳解决方案,但它按我的预期工作。