2016-07-27 17 views
1

Sowohl in Java als auch in SQL kann ich durch eine Liste von Vertices recursieren, um alle verknüpften Knoten zu erhalten. Aber ich kann nicht scheinen, das gleiche Ergebnis zu erhalten, wenn ich fetchPlan benutze.Verwendung von OrientDB fetchPlan zum Zurückgeben einer SQL-Traverse

Dies gibt die richtigen Graphen (alle auf den übergeordneten Knoten verknüpft, aber nicht andere Eltern, die den gleichen Kind-Knoten teilen)

traverse out('Dependency') from #33 

ich suche für einen Plan holen, die die gleiche grafische Darstellung zurück. Unten ist ein fetchPlan eingefügt, der in der Nähe ist, aber andere Wurzelknoten einzieht und ich möchte nur alle Kinder eines einzelnen Elternteils.

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

Meine DB hat 2 Vertices und 1 Edge verbindet sie. Eltern -> Kante -> Kind. Ein Kind ist möglicherweise mit mehreren Eltern verknüpft, aber aus der Elternansicht möchte ich nur seine Kinder sehen, die nicht mit Eltern verbunden sind.

Antwort

0

Try this:

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

das ist, was ich bekommen:

enter image description here

wie Sie die Abfrage sehen gibt mir nur das verknüpfte Kind und nicht die anderen Eltern.

Ich hoffe, es hilft.

Grüße.

+0

Dank für die Antwort hilft, tut es mir das Kind der Eltern geben, aber es gibt nicht die Childs Kinder. Traverse macht das richtig. Ein Elternteil hat ein Kind und dieses Kind kann ein Kind haben. – Kirk

+0

Aber möchten Sie, dass die Abfrage Ihnen die Kinder eines bestimmten Datensatzes oder die Kinder aller Eltern zurückgibt? –

+0

Ähnlich wie ein Java-Abhängigkeitsbaum möchte ich sehen, dass springMVC von SpringCore abhängig ist, das von apacheCommons abhängt. Aber ich möchte nicht die Hunderte anderer Projekte sehen, die von ApacheCommons oder Spring abhängen. – Kirk

0

Mit Javascript Sie diese Funktion mit dem Paramenter verwenden könnte loszuwerden

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

Hoffe, es