基于Edge |属性值的图遍历OrientDB

时间:2017-03-09 05:28:06

标签: orientdb graph-theory gremlin graph-traversal

我有一个图表,可以保存公司的云基础架构的拓扑结构。它包含名为Object(Machines)的Vertex和名为link的Edge(表示机器如何相互链接,这些链接随着一台机器可以连接而不断变化根据需要选择不同的机器。

create class Object extends V

create class link extends E

对象顶点表示机器具有存储机器配置的属性。

create property Object.ram long

create property Object.mem long

create property Object.cpu_core long

“link”边缘将机器链接在一起形成拓扑。它是从一台机器到另一台机器的出站边缘。它有两个基于时间的属性startTime,表示在两台机器之间创建此边缘的时间和最初为无穷大的endTime,如果我们需要关闭此边缘,表示两台机器现在不再链接,则更新。

create property link.startTime long

create property link.endTime long

create property link.l_id string

我希望从Object(顶点)遍历到所有连接的对象,在链接(边缘)属性上强加一个条件,同时遍历那个时间t,应该是startTime< = t< = endTime。

例如Topology(请点击链接) 我想从节点rid#21:0向下遍历所有边缘,使用其startTime>的链接边缘。 1488965393和endTime< 1498965393.我是OrientDB的新手,并且无法找到相同的SQL命令。

伪查询(如果可能,寻找类似的东西):

SELECT *  FROM (TRAVERSE out('link') FROM #21:0 while startTime > 1488965393 and endTime < 1498965393) 

1 个答案:

答案 0 :(得分:0)

我能够形成一个产生所需输出的查询

  

SELECT id FORM(TRAVERSE out()FROM#21:0 WHILE(creationTime&lt; = 1488965393 AND endTime&gt; = 1488965393 AND @ class ='link'))WHERE @ class ='Object'