You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArangoDB图遍历中如何排除经过特定节点的路径

解决ArangoDB图遍历中排除经过特定节点的路径问题

我懂你的问题了——你原来的过滤条件只盯着最终到达的节点v,但execute1是路径里的中间节点,所以那个v.name != "execute1"根本没法过滤掉包含它的路径,这就是为啥两条路径还都返回了。

要实现“排除所有经过特定节点的路径”,你得检查整个路径上的所有节点,而不是只看最后一个终点。这里可以用ArangoDB的NONE(或者NOT ANY)运算符来遍历路径的顶点集合,确保里面没有你要排除的节点。

给你修改后的查询:

FOR v, e, p IN 1..10 OUTBOUND 'Node/start_0' Path OPTIONS { bfs: true}
FILTER (v.name == "end" OR v.name == "error") 
  AND NONE x IN p.vertices[*].name FILTER x == "execute1"
RETURN CONCAT_SEPARATOR(' - ', p.vertices[*].name)

逻辑解释:

  1. 第一个FILTER保持不变,确保我们只保留终点是end或error的路径;
  2. 第二个条件NONE x IN p.vertices[*].name FILTER x == "execute1"会检查路径上的所有节点名称,只有当没有任何一个节点是execute1时,这条路径才会被保留;
  3. 你也可以把NONE换成NOT ANY,效果完全一致:NOT ANY x IN p.vertices[*].name FILTER x == "execute1"。

这样修改后,查询就会只返回你想要的那条start - decide - execute2 - end路径啦。

内容的提问来源于stack exchange,提问作者krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:18:10