从ArangoDB中检索嵌套的json或树

时间:2018-04-10 07:42:24

标签: database graph hierarchy arangodb

ArangoDB非常适合检索数据图。树是一种图形。
我们希望将建筑物的数据存储在数据库中。建筑物的结构可以被认为是部分的层次结构 数据结构非常简单:包含其他程序集的程序集,深度不受限制。 程序集存储为文档,并通过边集合contains进行链接。

我需要的数据可以通过

获取
FOR v, e, path IN 1..3 OUTBOUND
'assemblies/14810426' contains
RETURN path

数据存在,但是,我希望有一个类似

的json
{name: "Office Building", 
 assemblies: [{name: "Director's office",
   assemblies: [{name: "Chair"}, {name: "Desk"}]}, 
{name: "Toilet}]}

有没有办法直接从ArangoDB获取这种格式,或者我是否需要自己编写代码才能将图形路径转换为树? 我想写一个Foxx服务是一种选择,但我想避免这种情况。

有一个similar question, with answer,但这是针对之前版本的ArangoDB。它需要一些foxx代码。我希望能直接从AQL获得解决方案。

2 个答案:

答案 0 :(得分:1)

您可以使用子查询来聚合结果并将其添加到返回结果中。

像这样FOR doc IN assemblies FILTER doc._id=='assemblies/14810426' LET conn_docs=(FOR v,e,path IN 1..3 OUTBOUND doc contains RETURN {'name':v.name}) RETURN {'name':doc.name,'assemblies':conn_docs}的AQL查询可以完成任务,它将连接的程序集聚合到查询文档并将它们放在返回结果中

答案 1 :(得分:0)

我知道你想要避开Foxx,但是如果有兴趣的话,我已经为那些想要为菜单树进行递归嵌套的人解答了这个问题。

有关详细信息,请查看我对Arangodb AQL recursive graph traversal 的回答。