在ArangoDB中,如何根据图遍历过程中访问的顶点构造(投影)一个RETURN对象

问题描述 投票:0回答:1

我对 ArangoDB 和基于图的遍历查询都很陌生。

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

让我们以这个例子为例:

顶点1 { key1: value1 }

顶点2 { key2 : value2, key3: value3 }

顶点3 { key4 : value4 }

顶点4 { key5 : value5 }

我已经从文档中弄清楚了基本的图形遍历,但是我有一个特定的要求,即根据从 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

如果您需要更多信息,请告诉我

arangodb graph-traversal arangojs
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.