我如何 return arango ql 中一个顶点的所有父节点?

How can I return all parents of a vertex in arango ql?

我正在尝试编写一个 AQL 查询,returns 一个顶点的所有子节点和该顶点本身。

例如我有这个结构:

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

我的查询是这样的:

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

但它 returns 形式的结果

"child": D
"parent": A

"child": D
"parent":B

"child": E
"parent": C

我期望的查询结果类似于

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

"child": E
"parent": C

"child": F
"parent": 

如何修改我的查询以获得结果?

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

Returns 像这样。但是还有文档详细信息。 [ { "child": "D", "parents": ["A", "B"] }, { "child": "E", "parents": ["C"] } ]

乍一看,这是我会采用的方法,returns 主要是您正在寻找的方法。因为 F 没有边,所以您无法从 AQL 语句的第二部分 (FOR child IN OUTBOUND parent EdgeCollection) 到达它。本声明只会收集children。 F 在技术上不是 child 而不是 parent 因为它是无边的。

COLLECT 语句非常强大,可以针对这些类型的分组进行更多研究。 https://www.arangodb.com/docs/stable/aql/operations-collect.html

经过一番折腾,我最终创建了一个适合我需要的查询。

FOR child in entity
     LET parents = (
            FOR p IN INBOUND child link
            RETURN {parentfp: p.fingerprint, parentTypeFp: p.typeFp})
            RETURN MERGE(\n" +
            {   
              childFp: child.fingerprint,
              childTypeFp: child.typeFp,
              parents
             })