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获得解决方案。
答案 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 的回答。