繁体   English   中英

ArangoDB:遍历边缘连接到其他边缘的遍​​历

[英]ArangoDB: Traversals where edges are connected to other edges

我最近读到ArangoDB能够将边连接到图中的其他边。 在这种情况下,如何查询路径工作? 例如:

car <-------- part
        ^
        |
        |
installationEvidence

在这种情况下, installationEvidence是连接到汽车零件之间边缘的节点。 从汽车节点开始,返回installationEvidence的AQL是什么但不是part installationEvidencepart在所考虑的p.vertices[1]层?

在ArangoDB中,边缘是一种特殊类型的文档。 这就是为什么你可以存储指向其他边缘的边缘。 从查询的角度来看,这条边有两个方向:A)遍历通向target edge 在这种情况下,假设它是一般类型的文档,并且遍历将不遵循target edge任何方向。 这意味着您必须在语句中编写2个遍历步骤。 边缘的第一个结尾。 第二个从边缘的_from_to开始。 在您的情况下,查询可能如下所示:

FOR edge IN 1 OUTBOUND @installationEvidece @@edges1
  LET car = DOCUMENT(edge._to)
  RETURN car

B)遍历穿过边缘,该边缘具有指向它的其他边缘。 这种情况比较复杂。 在ArangoDB的架构中,“顶点”对它的附着边缘一无所知,边缘知道它们的顶点。 在这种情况下你可以做的是再次写两个遍历语句,其中第二个以遇到的边开始,例如:

FOR part,edge IN 1 INBOUND @car @@edges1
  FOR installationEvidence IN 1 INBOUND edge @@edges2
    [...]

目前我们没有遇到客户的任何使用案例,使上述遍历更加透明。 如果这对您至关重要,请与我们联系,我们可以提高优先级,使这些查询更容易制定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM