繁体   English   中英

从 ArangoDB 检索嵌套的 json 或树

[英]Retreiving nested json or a tree from ArangoDB

ArangoDB 非常适合检索数据图。 树是一种图。
我们想将建筑物的数据存储在数据库中。 建筑物的结构可以被认为是部件的层次结构。
数据结构非常简单:程序集包含其他程序集,深度无限。 程序集存储为文档,并由contains .

我需要的数据,可以获取

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

数据在那里,但是,我想要一个像

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

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

有一个类似的问题,有 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}

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

我知道你想避免 Foxx,但如果有兴趣,我已经为其他想要递归嵌套菜单树的人回答了这个问题。

查看我对Arangodb AQL recursive graph traversal 的回答以获取更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM