Wie berechnet man Aggregate für Unterbäume in Gremlin?

9

Ich habe einen Baum mit vielen Ebenen, wo Blattknoten die Eigenschaft "count" haben können. Ich möchte die Gesamtzählung für jeden Unterbaum berechnen und diese Werte im Wurzelknoten jedes Unterbaums zwischenspeichern. Ist das im Gremlin möglich?

    
isobretatel 18.09.2015, 20:55
quelle

1 Antwort

3

Du könntest es mit sideEffect machen - das ist ziemlich einfach. Wir haben einen einfachen Baum mit:

eingerichtet %Vor%

Und dann ist hier die Berechnung über jeden Teilbaum innerhalb des gesamten Baums:

%Vor%

Diese Abfrage bricht so zusammen. Zuerst dieses Stück:

%Vor%

erhält irgendeinen Teil des Baums, der kein Blattknoten ist (d. h. mindestens eine ausgehende Kante sollte kein Blatt sein). Zweitens verwenden wir sideEffect , um jede Wurzel eines Teilbaums zu verarbeiten:

%Vor%

speichert die Summe der "count" -Eigenschaft für jeden Teilbaum in einer Variablen namens c . Mit dem elvis-Operator ( ?: ) gibt es ein bisschen groovy goodness, um nach Scheitelpunkten ohne "count" -Eigenschaft zu suchen und in diesen Fällen eine Null zurückzugeben. Nachdem Sie den Baum durchlaufen haben, um c zu berechnen, können Sie einfach den Wert von c in Ihrem Wurzelknoten des Teilbaums speichern über:

%Vor%     
stephen mallette 28.09.2015, 19:40
quelle

Tags und Links