这是我的 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
or 时p.vertices[*]
,它总是会展平数组。基本上我想遍历每个数组并为每个数组返回一些东西。
就像这个python代码:
lists = [[], [], []]
for l in lists:
do_something_with_list(l)
选项 #1:您可以将AQL 变量与子查询(嵌套 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 完成),您也可以使用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
注意,上面的用户函数必须接受和数组并返回一个数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句