[英]ArangoDB: Traversals where edges are connected to other edges
我最近读到ArangoDB能够将边连接到图中的其他边。 在这种情况下,如何查询路径工作? 例如:
car <-------- part
^
|
|
installationEvidence
在这种情况下, installationEvidence
是连接到汽车零件之间边缘的节点。 从汽车节点开始,返回installationEvidence
的AQL是什么但不是part
? 都installationEvidence
和part
在所考虑的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.