Database 从ArangoDB检索嵌套json或树

Database 从ArangoDB检索嵌套json或树,database,graph,hierarchy,arangodb,Database,Graph,Hierarchy,Arangodb,ArangoDB非常适合检索数据图。树是一种图形。 我们希望将建筑物的数据存储在数据库中。建筑物的结构可以看作是一个由多个部分组成的层次结构。 数据结构非常简单:程序集包含其他程序集,深度无限。 程序集存储为文档,并通过边集合包含链接 我需要的数据,可以用 FOR v, e, path IN 1..3 OUTBOUND 'assemblies/14810426' contains RETURN path 数据在那里,但是,我希望有一个类似json的 {name: "Office Buildin

ArangoDB非常适合检索数据图。树是一种图形。
我们希望将建筑物的数据存储在数据库中。建筑物的结构可以看作是一个由多个部分组成的层次结构。
数据结构非常简单:程序集包含其他程序集,深度无限。 程序集存储为文档,并通过边集合
包含
链接

我需要的数据,可以用

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服务是一个选择,但我想避免


有一个,但这是ArangoDB的前一个版本。它需要一点foxx代码。我希望直接从AQL得到一个解决方案。

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

像这样的AQL查询

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}

将完成此任务,将连接的程序集聚合到一个查询文档中,并将其放在返回结果中

我知道您希望避免使用Foxx,但如果感兴趣,我已经为其他希望对菜单树进行递归嵌套的人回答了这个问题


更多信息,请查看我的答案。

这为我提供了一个层次结构。我可以使用它来填充我的树视图,并在用户深入到树中时执行其他查询。不过,如果在一个查询中有多个级别就好了。您对多个级别的概念是什么?我扩展了示例结果。一座建筑可以有多个房间,每个房间可以有多个部分,每个部分可能包含更多的部分。所以,理论上,包含其他程序集的程序集的级别是无限的。数据库是无模式的。。。因此,您可以灵活地存储数据。。。通过将子查询与collector/count/aggregator语句组合,您可以拥有这些多个级别。这种方法的问题是,您为每个程序集触发一个查询。在一个有50000个部件的建筑中,这将成为一个问题。我想我会尝试将图形查询的输出处理到客户机代码中的树中。也许是我们正在开发的arangodb_外部适配器的一个很好的补充。