我是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 )