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 获得解决方案。
最佳答案
您可以使用子查询来聚合结果并将其添加到返回结果中。
这样的 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}
将执行该任务,将连接的程序集聚合到查询文档并将其放入返回结果中
关于database - 从 ArangoDB 检索嵌套 json 或树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49748042/