database - 从 ArangoDB 检索嵌套 json 或树

标签 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 获得解决方案。

最佳答案

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

这样的 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/

相关文章:

python - 从 Python 中的邻接列表构建菜单树

sql - 当存在其他唯一字段时,为什么要使用自动递增的主键?

mysql - 当所有表都没有主键时,使用 'SET' 进行多列更新

algorithm - 查找强连接组件之间的弧

python - 使用 pymongo 在 MongoDB 中创建具有父子层次结构的数据库

linux - 递归计算具有分隔模式的行数

database - 将 Microsoft Access 数据库迁移到 SQL Server Compact Edition 4.0

javascript - 使用基于子数组元素 id 的键创建 couchdb View

azure - az图查询和tsv

C++ 遍历 vector 拷贝