从GRAPH_NEIGHBORS AQL查询

时间:2015-10-07 07:43:23

标签: graph arangodb vertices aql

我有一个像结构一样的文件夹树的图形,我希望将所有顶点作为从特定起点到图形的叶子。我使用了以下AQL查询:

FOR V in 
      GRAPH_NEIGHBORS( "FolderTree",
                       { "folderpath" : "/Cabinet 000001"},
                       { direction : 'outbound', 
                         maxDepth : 20,
                         vertexCollectionRestriction : 'Document'})
return V

查询工作正常但我只在结果中获得内部句柄ID:

["Document/4592118051","Document/4598606115","Document/4588185891",....]

我希望将记录列表转换为集合而不是内部ID。所有内部ID都属于同一个集合。我想知道是否可以使用子查询。我不明白可能是什么语法。

此致

2 个答案:

答案 0 :(得分:1)

您必须将<div class="container"> <p class="left"> left side element 1 </p> <p class="right"> right side element 1 </p> <p class="left"> left side element 2 </p> <p class="left"> left side element 3 </p> <p class="right"> right side element 2 </p> </div>选项includeData作为GRAPH_NEIGHBORS传递。

true

FOR V in GRAPH_NEIGHBORS("FolderTree", {"folderpath" : "/Cabinet 000001"}, { direction : 'outbound', maxDepth : 20, vertexCollectionRestriction : 'Document', includeData: true} ) return V 的行为随着2.6的发布而改变,之前的版本确实包含了结果中的所有文档属性,也许你被这种改变所困扰。

答案 1 :(得分:0)

感谢Tom的输入,它运行正常,但执行速度有点慢。我是Arango的新手,我为一个项目评估产品,但我开始爱上Arango DB,它是一个非常完整的数据库,现在很棒。

对于我最初的问题,我找到了另一种使用临时数组的方法。它仅适用于结果有限的情况。在我的情况下,我有近1000条记录:

LET docs = (FOR V in  GRAPH_NEIGHBORS("FolderTree",{"folderpath" : "/Cabinet 000001"},{direction : 'outbound', maxDepth : 10,vertexCollectionRestriction : 'Document'}) RETURN V)
FOR docid in docs
  FOR doc in Document
  FILTER doc._id==docid
  return doc

这一个需要5秒才能加载1000条记录而另一条需要25秒。