首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ArangoDB:图遍历中的顺序

ArangoDB:图遍历中的顺序
EN

Stack Overflow用户
提问于 2018-11-27 23:45:56
回答 1查看 291关注 0票数 2

我有一个非常标准的graphql,它表示一个树形结构:

我想进行一次图遍历,并根据我在每条边上设置的order强制排序:

一个-> C

A -> B -> E

A -> B -> D

我试图在我的查询上添加一个排序,但它对整个结果数组进行排序,这并不是我想要的:

代码语言:javascript
复制
FOR v, e, p IN 1..1000 OUTBOUND A
    edge_collec
    SORT e.order
    RETURN v

有没有办法使用AQL做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-06 04:37:16

查询的作用是:

从起始折点开始按边属性以升序对边集合中的所有传出边进行排序A

  • Then 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排序将在返回BD (1)之前返回CE (0)。因为两条边具有相同的值,所以不确定首先返回C还是E,以及第三次返回B还是D。

如果希望深度=1处的顶点在深度= 2处的顶点之前返回,但在每个深度级别上仍按order排序,则可以使用:

代码语言:javascript
复制
SORT LENGTH(p.edges), e.order

LENGTH(p.edges)提供了当前遍历的深度。它首先按深度排序,然后按边缘属性排序,并为您提供所需的结果顺序:C B E D

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53503260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档