1

Java と SQL の両方で、頂点のリストを再帰的に処理して、リンクされたすべてのノードを取得できます。しかし、fetchPlan を使用すると、同じ結果が得られないようです。

これにより、正しいグラフが返されます (すべてのノードが親にリンクされていますが、同じ子ノードを共有する他の親にはリンクされていません)。

traverse out('Dependency') from #33

同じグラフを返すフェッチ プランを探しています。以下に貼り付けたのは、近いが他のルート ノードをプルする fetchPlan です。1 つの親のすべての子のみが必要です。

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

私のDBには2つの頂点とそれらを接続する1つのエッジがあります。親 -> エッジ -> 子。子供は複数の親にリンクされている可能性がありますが、親のビューからは、自分の子供が親に接続されていないことだけを見たいと思っています。

4

2 に答える 2

0

これを試して:

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

これは私が得るものです:

ここに画像の説明を入力

ご覧のとおり、クエリはリンクされた子のみを返し、他の親は返しません。

それが役に立てば幸い。

よろしく。

于 2016-07-27T22:04:52.527 に答える
0

JavaScriptを使用すると、この関数をパラメーターridで使用できます

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=[];
}

それが役に立てば幸い

于 2016-07-29T09:34:01.553 に答える