Arangodb 使用aql遍历嵌套数组
以下是我的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"
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
注意,上面的用户函数必须接受和数组并返回数组