ArangoDB:图遍历中的顺序
ArangoDB: order in graph traversal
我有一个非常标准的 graphql,它表示树结构:
我想进行图遍历并根据我在每条边上设置的 order
强制排序:
A -> C
A -> B -> E
A -> B -> D
我试图在我的查询中添加一个 SORT,但它对整个结果数组进行排序,这不是我想要的:
FOR v, e, p IN 1..1000 OUTBOUND A
edge_collec
SORT e.order
RETURN v
有没有办法使用 AQL 来做到这一点?
查询所做的是:
- 从起始顶点 A
跟随边集合 edge_collec
中的所有出边
- 然后按边属性升序排列
order
- Return 顶点(每个找到的路径的最后一个顶点)
边缘属性 e.order
为 0 或 1:
A --[ order: 1 ]--> B
A --[ order: 0 ]--> C
B --[ order: 1 ]--> D
B --[ order: 0 ]--> E
按 order
排序将 return C 和 E (0) 在 之前B 和 D (1)。
因为两条边有相同的值,所以C和E是先returned,B还是D是第三returned是不确定的。
如果您希望深度 = 1 的顶点在深度 = 2 的顶点之前被 return 编辑,但仍然在每个深度级别按 order
排序,您可以使用:
SORT LENGTH(p.edges), e.order
LENGTH(p.edges)
给你当前的遍历深度。它首先按深度排序,然后按边缘属性排序,然后给出所需的结果顺序:C B E D
我有一个非常标准的 graphql,它表示树结构:
我想进行图遍历并根据我在每条边上设置的 order
强制排序:
A -> C
A -> B -> E
A -> B -> D
我试图在我的查询中添加一个 SORT,但它对整个结果数组进行排序,这不是我想要的:
FOR v, e, p IN 1..1000 OUTBOUND A
edge_collec
SORT e.order
RETURN v
有没有办法使用 AQL 来做到这一点?
查询所做的是:
- 从起始顶点 A 跟随边集合
- 然后按边属性升序排列
order
- Return 顶点(每个找到的路径的最后一个顶点)
edge_collec
中的所有出边
边缘属性 e.order
为 0 或 1:
A --[ order: 1 ]--> B
A --[ order: 0 ]--> C
B --[ order: 1 ]--> D
B --[ order: 0 ]--> E
按 order
排序将 return C 和 E (0) 在 之前B 和 D (1)。
因为两条边有相同的值,所以C和E是先returned,B还是D是第三returned是不确定的。
如果您希望深度 = 1 的顶点在深度 = 2 的顶点之前被 return 编辑,但仍然在每个深度级别按 order
排序,您可以使用:
SORT LENGTH(p.edges), e.order
LENGTH(p.edges)
给你当前的遍历深度。它首先按深度排序,然后按边缘属性排序,然后给出所需的结果顺序:C B E D