[英]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 将发出起始顶点为v
和null
为e
。 任何更高的最小深度都会跳过这个。 使用1..2
作为深度将为您提供更多路径,其中包含深度 2 路径的较短版本,但起始顶点始终位于p.vertices[0]
。
关于遍历选项,语法是FOR … IN … OPTIONS
。 您必须将独立的LET
和FILTER
操作放在属于遍历语言结构的OPTIONS
之后。
如果要过滤掉任何包含来自未指定 collections 的顶点的路径,则需要对路径上的所有顶点执行此操作,请使用PRUNE
或即将推出的vertexCollections
选项 (3.7)。 仅在v
上过滤不会消除某些路径(深度 2 的路径,其中深度 2 的顶点来自集合 A、B、C 或 D,但深度 1 的顶点不是)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.