当我在Arango中进行遍历时,我得到了一个类似于以下的json结构数组:
{
"vertex" : {
"_id" : "vertices/857831247835",
"_key" : "857831247835",
"_rev" : "857831247835",
},
"path" : {
"edges" : [
{
"_id" : "edges/857831575515",
"_key" : "857831575515",
"_rev" : "857831575515",
"_from" : "vertices/857831247835",
"_to" : "vertices/857821417435",
}
],
"vertices" : [
{
"_id" : "vertices/857821417435",
"_key" : "857821417435",
"_rev" : "857821417435",
},
{
"_id" : "vertices/857831247835",
"_key" : "857831247835",
"_rev" : "857831247835",
}
]
},
"startVertex" : "vertices/857821417435"
}
有没有一种方法可以使用AQL将遍历中找到的 * 所有 * 边/顶点放入一个类似上面的结构中?
2条答案
按热度按时间anhgbhbe1#
实际上,您可以使用两种方法来获得结果:
轻松扩展您的AQL查询:
FOR x IN (<<Your previous query here>>) RETURN {edges: x.path.edges, vertices: x.path.vertices, vertex: x.vertex, startVertex: x.startVertex}
更高性能的方法(缩短对象创建):注册一个用户定义的函数,如下所示:https://docs.arangodb.com/3.11/aql/user-defined-functions/使用
arangosh
一次。这应该是这样的:
然后在您的AQL中添加与
paths: true
相同的附加选项visitor: "myVisitors::flatVisitor"
。顺便说一句:
paths: true
在这种情况下将被忽略,因为它只在我们的默认访问者中使用。提示:如果你只需要在你的结果中的某些属性,而不是整个文档,只在你的访问者中返回这些。这将显著提高性能。
hlswsv352#
有点老,但为了新的游客这个问题。另一种方法是从路径中唯一地累积边(语法是arangojs官方客户端的):