繁体   English   中英

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

[英]Arangodb AQL start vertex included despite min depth set to 1

即使最小深度设置为 1,以下遍历始终返回起始顶点。我希望仅当最小深度设置为 0 时才返回起始顶点。另外有趣的是 OPTIONS function 不适用于过滤器已使用(错误:在 position 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 的顶点以及它们之间的边。 最小深度不会使其从路径中排除顶点或边。

然而,在 for 循环的第一次“迭代”中,最小深度 0 将发出起始顶点为vnulle 任何更高的最小深度都会跳过这个。 使用1..2作为深度将为您提供更多路径,其中包含深度 2 路径的较短版本,但起始顶点始终位于p.vertices[0]

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM