这里是我的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:你可以用一个AQL variables(嵌套FOR)像下面更新的样本中一起使用subquery:
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:如果您有对象转换(即,如果从您的样品do_something_with_list不是那么简单,不能用普通AQL完成)一个复杂的逻辑,你也可以使用User Function。你必须注册用户的功能的第一步,让我们称之为DO_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
请注意,上面的用户函数必须接受和数组,并返回一个数组。