2016-06-05 13 views
0

Ich habe ein Diagramm in ArangoDB, dessen Wurzelknoten 'X' ist. Nun sind "a, b, c, d, e, f" die Geschwister von "X" direkten oder Grand-Grand-Geschwistern. Nun möchte ich von einem gegebenen Geschwisterknoten "a, b, c, d, e oder f" zum Knoten "X" gelangen. Gibt es eine allgemeine AQL-Abfrage, die direkt zum Stammknoten eines Diagramms durchläuft?Wie erhält man den Schlüssel des Wurzelknotens eines Graphen in ArangoDB?

+0

Hat die Antwort für Sie funktioniert? Wenn ja, können Sie es als "akzeptiert" bezeichnen? Wenn nicht, was fehlt? – dothebart

Antwort

3

Um ein genaues Beispiel zu geben, müsste ich ein bisschen mehr wissen, aber das ist eine von mehreren Lösungen.

Angenommen, dass die Knoten durch "untergeordnete" Kanten verbunden sind und die Richtung der Kanten von Eltern zu Kind gehen. Sie würden den Baum oder INBOUND

FOR v,e,p IN 1..50 INBOUND '(id of starting node a,b,etc.)' child RETURN p.vertices 

durchqueren Wenn Sie wissen, wie viele Hops Maximum an der Wurzel zu diesem Wert die 50 ändern.

Diese Anweisung gibt alle Pfade und Zwischenpfade vom Startknoten über die untergeordneten Verbindungen zum Kopfknoten zurück. Um nur den Pfad zum Kopfknoten zurückzugeben, müssten Sie die Zwischenpfade herausfiltern. Dies könnte mit einer Prüfung geschehen, um zu sehen, dass es keinen Elternknoten gibt.

FOR v,e,p IN 1..50 INBOUND '(id of starting node a,b,etc.)' child 
    FILTER LENGTH(EDGES(child,v._id,'inbound'))==0 RETURN p.vertices 

die alle Pfade ausfiltert, die nicht an einem Wurzelknoten enden.

+0

Ich habe versucht, das gleiche zu tun, wie den maximalen Wert für den Hop zu setzen, aber ich weiß nicht, wie viel Hop ich tun sollte, um den Knoten zu erreichen ....... ein kluger Weg, dies zu tun –

+0

In dieser Zeit, nein, Gib einfach einen großen Wert ein. Stellen Sie nur sicher, dass Sie Pfadfilter bereitstellen, um das Traversal zu stoppen, wenn Sie das entsprechende Ziel erreichen. Da diese an der Spitze des Baumes stehen und somit keine Eltern haben, sollte es trotzdem aufhören. – ggendel