我如何在arango ql中返回顶点的所有父代?

问题描述 投票:0回答:1

我正在尝试编写一个AQL查询,该查询返回一个顶点的所有子元素以及该顶点本身。

例如,我有这个结构:

  A      B         C
  |      |         |
  D------          E     F

这是我的查询外观:

for parent in collection
for child in outbound parent link
   RETURN{ parent, 
       child
    }

但是它以以下形式返回结果

"child": D
"parent": A

"child": D
"parent":B

"child": E
"parent": C

我期望查询得到的结果像

"child": D
"parent": A, B

"child": E
"parent": C

"child": F
"parent": 

如何修改查询以获取结果?

arangodb aql
1个回答
0
投票

FOR parent IN VertexCollection FOR child IN OUTBOUND parent EdgeCollection COLLECT c = child.value INTO groups RETURN { child: c, parents: groups[*].parent }

返回类似的内容。但是还有文件的细节。[ { "child": "D", "parents": ["A", "B"] }, { "child": "E", "parents": ["C"] } ]

乍一看,这是我会采用的方法,并且大多数情况下都会按照您的期望返回。因为F没有边缘,所以您无法从AQL语句的第二部分(FOR child IN OUTBOUND parent EdgeCollection)到达它。该声明仅会收集孩子。 F从技术上讲不是孩子而不是父母,因为它是无边的。

COLLECT语句具有强大的功能,对于这些类型的分组,它会做得更多。 https://www.arangodb.com/docs/stable/aql/operations-collect.html

© www.soinside.com 2019 - 2024. All rights reserved.