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