我是OrientDB的新手,我想使用新的shortestPath()方法获取两个顶点之间的边。

我要做的是:

OSQLSynchQuery<T> sql = new OSQLSynchQuery<T>("select shortestpath(" + firstVertex + ", " + secondVertex + ").asString()");

List<ODocument> execute = db.query(sql);

我只能得到的是[#-2:1{shortestpath:[#8:1, #8:3]} v0]

因此,我想知道如何从该输出或没有asString()的输出中提取边缘(在这种情况下,只有一个边缘,因为这两个顶点是直接连接的):
[#-2:1{shortestpath:[2]} v0]

最佳答案

OrientDB具有集合和映射类型。要收集结果集(您感兴趣的内容),必须将其展平:

select flatten( shortestpath(" + firstVertex + ", " + secondVertex + ") )

要获得边缘向外的边缘,有很多方法。下面是其中一些:
select vertices.out from (
   select flatten( shortestpath(" + firstVertex + ", " + secondVertex + ") ) as vertices
)

或者:
select flatten( shortestpath(" + firstVertex + ", " + secondVertex + ").out )

10-05 22:50