Arangodb 使用aql遍历嵌套数组

Arangodb 使用aql遍历嵌套数组,arangodb,aql,Arangodb,Aql,以下是我的aql查询,提供了到特定顶点的路径: FOR v, e, p IN 1..2 OUTBOUND @startVertex GRAPH 'courses' FILTER v._id == @target RETURN p.vertices 它会返回这样的结果 [ [ { "_key": "ADELPHI+UNIVERSITY==BIO+111", "_id": "courses/ADELPHI+UNIVERSITY==BIO+111"

以下是我的aql查询,提供了到特定顶点的路径:

FOR v, e, p IN 1..2 OUTBOUND @startVertex GRAPH 'courses'
    FILTER v._id == @target
    RETURN p.vertices
它会返回这样的结果

[
  [
    {
      "_key": "ADELPHI+UNIVERSITY==BIO+111",
      "_id": "courses/ADELPHI+UNIVERSITY==BIO+111"
    },
    {
      "_key": "BOSTON+UNIVERSITY==CAS+BI+108",
      "_id": "courses/BOSTON+UNIVERSITY==CAS+BI+108"
    }
  ],
  [
    {
      "_key": "ADELPHI+UNIVERSITY==BIO+111",
      "_id": "courses/ADELPHI+UNIVERSITY==BIO+111"
    },
    {
      "_key": "UNIVERSITY+OF+NEVADA-LAS+VEGAS==BIOL+196",
      "_id": "courses/UNIVERSITY+OF+NEVADA-LAS+VEGAS==BIOL+196"
    },
    {
      "_key": "BOSTON+UNIVERSITY==CAS+BI+108",
      "_id": "courses/BOSTON+UNIVERSITY==CAS+BI+108"
    }
  ]
]
当我使用
FOR
操作符并尝试通过
p.vertices
p.vertices[*]
进行迭代时,它总是将数组展平。基本上,我希望遍历每个数组,并为每个数组返回一些内容

就像下面的python代码:

lists = [[], [], []]
for l in lists:
    do_something_with_list(l)
选项#1:您可以与(嵌套的FOR)一起使用,如下面更新的示例中所示:

FOR v, e, p IN 1..2 OUTBOUND @startVertex GRAPH 'courses'
    FILTER v._id == @target

LET updatedVertices = (
    FOR v in p.vertices
    // here you can change the value of v as you want
    // in my sample here I convert a v object to a 
    // string representing it's _id
    RETURN v._id 
)

RETURN updatedVertices
选项#2:如果对象转换有复杂的逻辑(即,如果使用样本中的_列表执行某项操作没有那么简单,无法使用普通AQL完成),您也可以使用。第一步你必须注册你的用户函数,让我们把它叫做dou-SOMETHING-WITH-LIST。然后,当您想要使用它时,您的AQL将类似于:

FOR v, e, p IN 1..2 OUTBOUND @startVertex GRAPH 'courses'
    FILTER v._id == @target

LET updatedVertices = DO_SOMETHING_WITH_LIST(p.vertices)

RETURN updatedVertices
注意,上面的用户函数必须接受和数组并返回数组。

选项#1:您可以与(嵌套的FOR)一起使用,如下面的更新示例中所示:

FOR v, e, p IN 1..2 OUTBOUND @startVertex GRAPH 'courses'
    FILTER v._id == @target

LET updatedVertices = (
    FOR v in p.vertices
    // here you can change the value of v as you want
    // in my sample here I convert a v object to a 
    // string representing it's _id
    RETURN v._id 
)

RETURN updatedVertices
选项#2:如果对象转换有复杂的逻辑(即,如果使用样本中的_列表执行某项操作没有那么简单,无法使用普通AQL完成),您也可以使用。第一步你必须注册你的用户函数,让我们把它叫做dou-SOMETHING-WITH-LIST。然后,当您想要使用它时,您的AQL将类似于:

FOR v, e, p IN 1..2 OUTBOUND @startVertex GRAPH 'courses'
    FILTER v._id == @target

LET updatedVertices = DO_SOMETHING_WITH_LIST(p.vertices)

RETURN updatedVertices
注意,上面的用户函数必须接受和数组并返回数组