在ArangoDB中,如何基于图遍历期间访问的顶点构造(投影)RETURN对象

时间:2017-06-19 05:29:15

标签: arangodb graph-traversal arangojs

我是ArangoDB和基于图形的遍历查询的新手。

以下是我的图表目前的结构。每个顶点都有至少一个属性(键值对)。你可以认为它有一个依赖树。每个父节点(具有自己的属性)都依赖于子节点(同样具有自己的属性)。父母与孩子的关系没有继承。

让我们说这个例子:

vertex1 {key1:value1}

vertex2 {key2:value2,key3:value3}

vertex3 {key4:value4}

vertex4 {key5:value5}

enter image description here

我已经从文档中找到了基本的图遍历,但是我有一个特定的要求,即根据从vertex1到maxDepth开始的顶点(访问)来构造RETURNed对象结构。

RETURN对象必须具有以下结构: 正如您所看到的那样,当顶点深度增加时,对象将嵌套在父节点下。

{
  vertex1: {
    key1:value1
    vertex2: {
      key2:value2,
      key3:value3,
      vertex3: {
        key4:value4
      }
    }
    vertex4: {
      key5:value5
    }
  }
}

我不能要求你为我写这个查询,但是非常感谢任何帮助,这会让我朝着正确的方向前进。

根据我目前的理解:

FOR v IN 1..2 OUTBOUND 'vertex1' GRAPH 'grapgName'
//I'm guessing I would have to COLLECT and GROUP 
//on the existing vertex to projected object structure. 
//I just don't know how :(
RETURN returnObj

如果您需要其他信息,请与我们联系

1 个答案:

答案 0 :(得分:2)

不能仅使用AQL返回上述结果,因为不支持递归。一种解决方案是使用自调用的用户定义函数(UDF)扩展AQL。有关UDF的更多信息,请访问https://docs.arangodb.com/3.2/AQL/Extending/