这是我的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)
答案 0 :(得分:2)
选项1::您可以将AQL variables与subquery(嵌套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::如果您有复杂的对象转换逻辑(例如,示例中的do_something_with_list不是那么简单,并且不能使用普通AQL完成),您也可以使用{ {3}}。第一步,您必须注册用户功能,我们将其称为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
注意,上面的用户函数必须接受并数组并返回一个数组。