接下来讲的是AQL tutorial比较有深度的一节:图的遍历。文档里指导建了一个EDGE类型的ChildOf来表示Charaters的关系。

看一下ChildOf里面的数据,跟之前的不同之处在于多了_from和_to两个属性,而且值是跟Charaters的_id属性对应的。
FOR v IN 1..1 OUTBOUND "Characters/1741" ChildOf
RETURN v.name
看一下这个语法的英文说明并解释一下:
这个for循环并不是遍历一个collection或者数组,它走过图,遍历它所找到的所有连接的点,同时把点赋值给变量v,另外还有另外两个变量表示 走过的边和完整的路径。上面的查询,遍历限制了最小和最大深度(也就是从开始节点算起需要的步数),同时只查询OUTBOUND方向。边的方向是从child指向parent,同时parent离child只有一步远,因此上诉语法查的是起点的Parent节点,Characters/1741就是起点。
1..1表示是第一层到第一层,1..2表示第一层到第二层,以此类推;
Outbound查的是父节点,同时还有inbound查的是子节点,关于这两个关键词的理解其实还是有点容易让人误解的。
例如文档里有这么一个例子:
Tywin <- Jaime <- Joffrey
FOR c IN Characters
FILTER c.name == "Tywin"
FOR v IN 2..2 INBOUND c ChildOf
RETURN v.name

本文深入探讨AQL教程中的图遍历概念,介绍如何使用Edge类型建立节点关系,并通过示例解释`_from`和`_to`属性。通过for循环遍历图,限定遍历的最小和最大深度,以及OUTBOUND和INBOUND边的方向。内容还澄清了这两个方向关键字可能带来的误解,并用Java程序员熟悉的InputStream和OutputStream进行类比解释。
&spm=1001.2101.3001.5002&articleId=100043751&d=1&t=3&u=9599c382b0e44d97a1e90c286fa6cf65)
5034

被折叠的 条评论
为什么被折叠?



