我有一个相当标准的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做到这一点?
答案 0 :(得分:1)
查询的作用是:
edge_collec
中的所有出站边缘order
边缘属性e.order
为0或1:
A --[ order: 1 ]--> B
A --[ order: 0 ]--> C
B --[ order: 1 ]--> D
B --[ order: 0 ]--> E
按order
排序将在 B 和 D 之前返回 C 和 E (0)。 (1)。
因为两个边的值相同,所以不确定是先返回C还是E,再返回B还是D。
如果要在深度= 2的顶点之前返回深度= 1的顶点,但仍在每个深度级别按order
排序,则可以使用:
SORT LENGTH(p.edges), e.order
LENGTH(p.edges)
为您提供当前遍历的深度。它首先按深度排序,然后按edge属性排序,然后为您提供所需的结果顺序: C B E D