ArangoDB——图遍历 Graph
创始人
2024-06-02 05:19:21
0

图遍历 Graph

  • 边缘文档(Edge)存储在边缘集合,并具有附加属性: _from 和 _to,两个或多个文档通过边缘连接起来。
    • 顶点可不必连接其他休战,也可通过多条边与一个以上的其他顶点相连,也可连接到自身的顶点。

    • 图是将节点视为圆,将边视为线或弧。术语节点和顶点可以互换使用。顶点由边连接,构成图。图有许多属性,包括每个关系的方向。
  • 图类型
    • 无向——边连接成对的节点而没有方向的概念

    • 定向——边有一个与之相关的方向(线/弧在描述中有箭头)

    • 有向无环图——边有方向并且没有环。

  • 图规范
    • 在 ArangoDB 中,每条边只有一个方向,不能同时指向两个方向。该模型也称为有向图。

    • 边始终是有向的,但是当您遍历图形或沿相反方向(INBOUND)跟随边而不是沿它们实际指向的方向(OUTBOUND)前进时,可以忽略方向(沿任何方向跟随)。遍历图形称为遍历。

  • 遍历深度
    • 遍历意味着以特定方式沿着图形的边缘行走,行走的步数。

      • 遍历 (S) 中的起始顶点的遍历深度为零。
      • 在深度 = 1 处是 S 的直接邻居(A、B 和 C)。
    • 小深度大于或等于 2 的遍历,有两种遍历图形
      • 深度优先(默认)

        • 继续沿着该路径上的起始顶点到最后一个顶点的边或直到达到最大遍历深度,然后沿着其他路径走。
      • 宽度优先(可选)

        • 跟随从起始顶点到下一层的所有边,然后跟随它们邻居的所有边到另一层并继续这种模式,直到没有更多的边可以跟随或达到最大遍历深度。
        • OPTIONS {bfs: true}
  • 图遍历查询
    • FOR vertex[, edge[, path]] IN [min[..max]] OUTBOUND|INBOUND|ANY startVertex edgeCollection[, more…]
    • FOR 发出最多三个变量
      • 顶点(对象):遍历中的当前顶点
      • edge (对象,可选): 遍历中的当前边
      • 路径(对象,可选):具有两个成员的当前路径的表示:
        • 顶点:此路径上所有顶点的数组
        • edges:此路径上所有边的数组
    • IN min..max:定义遍历的最小和最大深度。如果不指定,min默认为1,max默认为min

    • OUTBOUND/INBOUND/ANY定义您的搜索方向

    • edgeCollection:一个或多个集合名称,其中包含要在遍历中考虑的边
    • 图语句查询参数配置(options)
      • bfs 是否使用深度优先遍历查询
        • 宽度优先
          • OPTIONS {bfs: true}
        • 深度优先
          • OPTIONS {bfs: false}
      • uniqueVertices 认定遍历时节点唯一性
        • 不做任何限制。(默认)
          • OPTIONS {uniqueVertices: 'none'}
          • 此定义图查询中没有去重操作,会出现很多重复的数据及无效操作
        • 确保每个单独的路径上没有重复的顶点。
          • OPTIONS {uniqueVertices: 'path'}
          • 所有遍历的路径中没有重复。
        • 确保在整个遍历过程中访问每个可到达的顶点一次。
          • OPTIONS {uniqueVertices: 'global'}
          • 所有遍历的节点中没有重复。
      • uniqueEdges
        • 每个边只会遍历一遍。(默认)
          • OPTIONS {uniqueEdges: 'path'}
        • 不做任何限制。(不要用,可能会导致边的循环:转圈圈)
          • OPTIONS {uniqueEdges: 'none'}
      • 3.7以上才可用
        • edgeCollections 指定参与的边缘文档集合
        • vertexCollections 指定参与的节点文档集合
        • parallelism 并发设置
          • 如果省略或设置为1,遍历执行就不会并行化。如果设置为大于1的值,那么可以使用最多的工作线程并发地执行遍历。这个值的上限是目标机器上可用内核的数量。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...