通过特定节点的ArangoDB GRAPH TRAVERSAL
ArangoDB GRAPH TRAVERSAL through specific nodes
以美国城市为例,我要遍历所有经过纽约、芝加哥和西雅图的城市和道路。
这可以通过 TRAVERSAL AQL 函数(使用 filterVertices)来完成。然而,此函数仅采用 ID 而不是 GRAPH_TRAVERSAL 中的顶点示例。
GRAPH_TRAVERSAL 没有过滤选项,所以我的问题是有没有办法使用图形操作来过滤结果?
该功能实际上存在,但不知何故没有记录。我将它添加到我们的文档中,应该很快更新。抱歉给您带来不便。
filterVertices
获取顶点示例列表。
- 注意:您还可以为自定义 AQL 函数命名。带有签名
function(config, vertex, path)
。对于更具体的过滤。
vertexFilterMethod
定义了所有其他顶点应该做什么:
"prune"
将不会跟随附加到这些顶点的边。 (此处使用)
"exclude"
将不包含此特定顶点。
["prune", "exclude"]
以上都是。 (默认)
您的问题的示例查询如下(气道是我的图表):
FOR x in GRAPH_TRAVERSAL("airway", "a/SFO", "outbound", {filterVertices: [{_key: "SFO"}, {_key: "NYC"}, {name: "Chicago"}, {name: "Seattle"}], vertexFilterMethod: "prune"}) RETURN x
提示:确保在过滤器中也包括起始顶点。否则它总是 return 一个空数组(第一个访问的顶点被直接修剪)
以美国城市为例,我要遍历所有经过纽约、芝加哥和西雅图的城市和道路。
这可以通过 TRAVERSAL AQL 函数(使用 filterVertices)来完成。然而,此函数仅采用 ID 而不是 GRAPH_TRAVERSAL 中的顶点示例。
GRAPH_TRAVERSAL 没有过滤选项,所以我的问题是有没有办法使用图形操作来过滤结果?
该功能实际上存在,但不知何故没有记录。我将它添加到我们的文档中,应该很快更新。抱歉给您带来不便。
filterVertices
获取顶点示例列表。
- 注意:您还可以为自定义 AQL 函数命名。带有签名
function(config, vertex, path)
。对于更具体的过滤。
vertexFilterMethod
定义了所有其他顶点应该做什么:
"prune"
将不会跟随附加到这些顶点的边。 (此处使用)"exclude"
将不包含此特定顶点。["prune", "exclude"]
以上都是。 (默认)
您的问题的示例查询如下(气道是我的图表):
FOR x in GRAPH_TRAVERSAL("airway", "a/SFO", "outbound", {filterVertices: [{_key: "SFO"}, {_key: "NYC"}, {name: "Chicago"}, {name: "Seattle"}], vertexFilterMethod: "prune"}) RETURN x
提示:确保在过滤器中也包括起始顶点。否则它总是 return 一个空数组(第一个访问的顶点被直接修剪)