尽管最小深度设置为 1,但仍包含 Arangodb AQL 起始顶点

Arangodb AQL start vertex included despite min depth set to 1

即使最小深度设置为 1,以下遍历始终 returns 起始顶点。我本以为只有当最小深度设置为 0 时才会返回起始顶点。 同样有趣的是 OPTIONS 函数不适用于所使用的过滤器(错误:位置 7:1 处 'OPTIONS { uniqueVertices: "path"...' 附近的意外标识符(解析时))。 如果我 运行 这是两个单独的查询,每个查询一个顶点和边,我得到预期的结果。

for v,e,p in 1..2
                outbound 'X/14268273'
                Edge
                        let Coll = (parse_identifier(v._id).collection)
                     filter Coll in (['A', 'B','C', 'D'])
//OPTIONS { uniqueVertices: "path" , bfs: false}
                sort v.order
                return p

return p,也就是起始顶点到当前节点的路径。最小深度不影响它。深度为 2..2 时,它将包括起始顶点以及深度为 1 的顶点以及它们之间的边。最小深度不会使其从路径中排除顶点或边。

然而,

0 的最小深度将在 for 循环的第一次“迭代”中将起始顶点作为 vnull 作为 e 发出。任何更高的最小深度都会跳过这个。使用 1..2 作为深度会给你更多的路径,其中有较短版本的深度 2 路径,但起始顶点总是在 p.vertices[0].

关于遍历选项,语法是FOR … IN … OPTIONS。您必须将独立的 LETFILTER 操作放在属于遍历语言构造的 OPTIONS 之后。

如果你想过滤掉任何包含来自未指定集合的​​顶点的路径,那么你需要对路径上的所有顶点执行此操作,请使用 PRUNE 或即将推出的 vertexCollections 选项(3.7)。仅在 v 上过滤不会消除某些路径(深度 2 的路径,其中深度 2 的顶点来自集合 A、B、C 或 D,但深度 1 的顶点不是)。