2016-09-24 19 views
0

私はOrientDB(2.2.10)で作業していますが、時には自分のデータセットを視覚的に調べて、正しく処理していることを確認したいと思います。 OrientDB http://orientdb.com/orientdb/のこのページでは、次のクエリを持つ大規模なグラフの素敵な可視化を参照してください。OrientDB Studioでグラフを可視化する

select * from V limit -1; 

だから私は私のデータセットで同じクエリを試みたが、結果は私が働くことができないほど非常に低迷していますそれ。私のデータセットは非常に大きくはない(数百の頂点、数千の辺)が、結果は残念だ。私はすべての主要なブラウザを試しましたが、すべて私は同じ結果を持っています。私のコンピュータは低電力ではありません。私は16GBのRAMを備えたクアッドコアi7を持っています。

非常に単純な例として、私は次のグラフがあります BARを--WITHIN ---> CITY --LOCATED_IN - >国ここ

Find "friends of friends" with OrientDB SQL私はどのように、少なくとも一例を取得することができましたグラフ上でこのタイプのクエリを実行する。私は、例えば次のように私のグラフのサブセットを取得するために管理:

select expand(
bothE('WITHIN').bothV() 
) from Bar where barName='Foo' limit -1 

これは私の1バーの頂点、WITHINエッジと市の頂点のグラフをのget。しかし、今私が都市にある国を引き出すことでさらに一歩進んでみたいと思ったら、私はこのようなスタイルの質問を私のために働かせることはできません。私はこれを試しました:

select expand(
bothE('WITHIN').bothV() 
.bothE('LOCATED_IN').bothV() 
) from Bar where barName='Foo' limit -1 

この結果、同じサブセットが表示されます。しかし、私が最初のクエリを実行した後、キャンバスをクリアせずに2番目のクエリを実行すると、私は3つの頂点を取得します。だから私は近くにいるようだが、私は3つの頂点をすべて取得したいと思っており、最初に1つを実行する必要はなく、もう1つを実行する必要はありません。誰かが私を正しい方向に向けることができますか?

答えて

1

3つの頂点をすべて取得したい場合は、中間(都市)からの開始が簡単で、バーとコントリーを取得するために出入りするよりも簡単です。都市、バー名と国あなたがこのようなクエリを試すことができます取得するにはOrientDB Bar Structure

select name, in("WITHIN").name as barName,out("LOCATED_IN").name as barCountry from (select from City where name='Milan') unwind barName, barCountry 

を、出力は次のようになります。私は似た小さな構造で試してみた

OrientDB Bar Query Output

希望すると助かります。 あなたのケースに適していない場合は、教えてください。

+0

ありがとうございます。オレクサンドルとアレッサンドロともお返事ありがとうございます。私は今夜​​も一緒に試してみようと思っています。私がまだ苦労しているのは、両方のソリューションが全く違って見えるということです。一方は「トラバース」キーワード、もう一方は「巻き戻し」キーワードです。私は、これらの概念が説明されているガイドやチュートリアルを見つけるのに苦労しています。これらの概念が説明されているオンラインリソースへのリンクがありますか?ありがとう! –

+0

http://orientdb.com/docs/last/SQL-Traverse.html/http://orientdb.com/docs/last/SQL-Query.html#unwinding –

+1

リンクに感謝しています。それは私にとって完全にはっきりしていませんが、どのような状況で使用するべきですか?私はちょうどここで経験のビットを構築する必要があると思います:) –

1

あなたは

traverse * from (select from bar where barName='Foo') while $depth <= 4 

例を使用することができます。私はこの小さなグラフ

enter image description here

にしようと、私は

enter code here

を持って、それがお役に立てば幸いです。

関連する問題