Database Reference
In-Depth Information
Wenn uns Alice nicht interessiert, können wir dem except() -Filter eine Liste
der Knoten übergeben, die wir nicht wünschen.
alice.bothE('friends').bothV.except([alice]).name
==> Patty
Das Gegenstück zu except() ist retain() , das (wie Sie sich wohl denken
können) nur passende Knoten durchgeht.
Eine andere Option besteht darin, die letzte Vertex stattdessen mit einem
Codeblock herauszufiltern, der prüft, dass der aktuelle Schritt nicht der alice -
Vertex entspricht.
alice.bothE('friends').bothV.filter{!it.equals(alice)}.name
Und wenn wir nun alle Freunde von Alices Freunden suchen? Dann können
wir die Schritte einfach wie folgt wiederholen:
alice.bothE('friends').bothV.except([alice]).
bothE('friends').bothV.except([alice])
Auf die gleiche Weise könnten wir die Freunde der Freunde von Alices Freun-
den aufspüren, indem wir weitere bothE / bothV / except -Aufrufe hinzufügen.
Aber dann muss man sehr viel eintippen und man kann das bei einer varia-
blen Anzahl von Schritten nicht auf diese Weise machen. Hier hilft uns die
loop -Methode. Sie wiederholt eine Reihe von Schritten, solange die gegebene
Closure wahr ist.
Der folgende Code wiederholt die drei vorangegangenen Schritte, indem er
die Punkte vom loop-Aufruf zurückzählt. except ist also der erste, bothV der
zweite und bothE der dritte Schritt.
alice.bothE('friends').bothV.except([alice]).loop(3){
it.loops >= 2
}.name
Nachdem die Schritte durchlaufen wurden, ruft loop die angegebene Closure
auf - d. h. den Code zwischen den geschweiften Klammern {...} In unserem
Beispiel hält die it.loops -Property nach, wie oft die aktuelle Schleife aus-
geführt wurde. Wir prüfen, ob dieser Wert größer oder gleich zwei ist, d. h.,
die Schleife wird zweimal ausgeführt und dann beendet. Tatsächlich verhält
sich die Closure wie die Klausel einer while -Schleife bei einer typischen Pro-
grammiersprache.
Search WWH ::




Custom Search