6

OrientDB は初めてで、新しい shortestPath() メソッドを使用して 2 つの頂点間のエッジを取得したいと考えています。

私がすることは:

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].

したがって、この出力またはなしで取得した出力から、エッジ (この場合、これらの 2 つの頂点が直接接続されているため、1 つのエッジのみ) を抽出する方法を知りたいと思いましたasString()

[#-2:1{shortestpath:[2]} v0]
4

3 に答える 3

1

OrientDB にはコレクション型とマップ型があります。コレクションを結果セット (興味のあるもの) にするには、フラット化する必要があります。

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

エッジの発信エッジを取得するには、非常に多くの方法があります。それらのいくつかの下に:

select vertices.out from (
   select flatten( shortestpath(" + firstVertex + ", " + secondVertex + ") ) as vertices
)

またはまた:

select flatten( shortestpath(" + firstVertex + ", " + secondVertex + ").out )
于 2013-04-25T21:39:09.863 に答える
0

試す

select expand(shortestPath) from (select shortestPath(" + firstVertex + ", " + secondVertex + "))

頂点を受け取ります。

于 2014-02-21T15:53:22.587 に答える