2016-07-27 11 views
1

JavaとSQLの両方で、Verticesのリストを再帰して、すべてのリンクされたノードを取得できます。しかし、私はfetchPlanを使用して同じ結果を得ることはできません。OrientDB fetchPlanを使用してSQLトラバースを返す方法

これは私が同じグラフを返しますフェッチプランを探しています正しいグラフ(同じ子ノードを共有するすべての親にリンクされたノードではなく、他の親)

traverse out('Dependency') from #33 

を返します。下に貼り付けられたのは、近くにあるが他のルートノードを取得するfetchPlanであり、単一の親のすべての子のみが必要です。

id.getRecord().toJSON("fetchPlan:out_Dependency:6") 

My DBには2つのVerticesと1 Edgeがあります。親 - >エッジ - >子。子供は複数の親にリンクされているかもしれませんが、親のビューからは、自分の子供が親に接続されていないことを確認したいだけです。

答えて

0

これを試してみてください:

select @this.toJSON('fetchPlan:out_Dependency:2') from #21:0 

これは私が得るものです:あなたがクエリを見ることができるよう

enter image description here

は私にだけリンクされた子ではなく、他の親を返します。

希望します。

よろしくお願いいたします。あなたはparamenterでこの機能を使用することができますJavaScriptで

+0

感謝を助け、それは私の親の子を与えないが、それはチャイルズを与えるものではありません願って取り除きます子供。トラバースはこれを適切に行います。親には子供がいて、その子供には子供がいるかもしれません。 – Kirk

+0

しかし、あなたは特定のレコードの子どもたちやすべての親の子供たちを返すことを望んでいますか? –

+0

私が見たいJava依存ツリーとよく似ていますが、springMVCはapacheCommonsに依存するSpringCoreに依存しています。しかし、私はapacheCommonsやSpringに依存する他の何百ものプロジェクトを見たいとは思っていません。 – Kirk

0

var g=orient.getGraph(); 
var nodes = []; 
var previous=[]; 
var currently=[]; 
var b=g.command("sql","select from " + rid); 
if(b.length>0){ 
    var vertex=b[0]; 
    previous.push(vertex); 
    nodes.push(vertex); 
    do{ 
     for(i=0;i<previous.length;i++){ 
      var vertexOut=previous[i]; 
      var vertices=g.command("sql","select expand(out('Dependency')) from "+ vertexOut.getId()); 
      for(j=0;j<vertices.length;j++){ 
       currently.push(vertices[j]); 
       nodes.push(vertices[j]); 
      } 
     } 
     change(); 
    }while(previous.length>0); 
    return nodes; 
} 

function change(){ 
    previous=[]; 
    for (indice=0;indice<currently.length;indice++) 
     previous.push(currently[indice]); 
    currently=[]; 
} 

はそれが応答のために

関連する問題