2013-04-25 8 views
5

Ben OrientDB için yeni ve iki köşe arasında olan kenarları almak için yeni shortestPath() yöntemini kullanmak istiyorum.OrientDB'nin en kısa yolunu ziyaret edinPath()

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

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

ve ne sadece alabilirsiniz [#-2:1{shortestpath:[#8:1, #8:3]} v0] geçerli:

Ne yapmam olduğunu.

:

Yani, ben asString() olmadan olsun bu çıkışından veya çıkışından kenarları (iyi, bu durumda sadece bir kenar, bu iki köşe doğrudan bağlantılı olduğundan) ayıklamak nasıl bilmek istedim

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

Şimdiden teşekkürler!

cevap

1

OrientDB koleksiyon ve harita türleri var.

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

kenarları dışarıya yönelik kenarları pek çok yolu vardır almak için: Eğer düzleştirmek ettik (İlginizi olduğunuz tutar) bir koleksiyon sonuç kümesini yapmak. Birkaç tanesi Aşağıda: Ayrıca

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

Veya:

select flatten(shortestpath(" + firstVertex + ", " + secondVertex + ").out) 
+0

Hala kenar/s alamayan (ı v1.7.4 kullanıyorum unutmayın.). Şimdi anladım [# -2: 0 v0] ' –

+0

' db.query (sql) 'kullandığı için olabilir mi? Onunla sadece bir ArrayList alabilirim, Harita değil. Bunun nedeni, Java'da bir sql sorgusu yürütmek için başka ne kullanabilirim? –

+0

Kenarları geçmelisiniz. Birkaç yol var. Cevabımı değiştirmek için cevabımı değiştirdim – Lvca

0

Sen köşeleri alacak

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

deneyin.

+0

Sorum şu, köşeler değil kenarlar hakkındaydı. –

1

Benim için, dante veya Lvca böyle izah ediyor işe yaramadı:

select flatten(shortestPath) from (select shortestPath(#12:0,#12:2,'BOTH') 

konsolunda veya hiç kayıtlara hatalara Bu kurşun OrientDB Studio döndü.

Bunun yerine, işlev sonucu için bir takma ad kullandığımda, sonunda çalıştı. Yani belki bu formu denemek:

select flatten(sp) from (select shortestPath(#12:0,#15:2,'BOTH') as sp)