until

Turn a repeat() step into a do-while or while-do loop.

Synopsis

until( [ 'predicate' | 'traversal' ])
Table 1. Legend
Syntax conventions Description
Lowercase and uppercase Literal keyword. Includes ().
Italics Variable value. Replace with a user-defined value.
[] Optional. Square brackets ( [] ) surround optional command arguments. Do not type the square brackets.
{} Group. Braces ( {} ) identify a group to choose from. Do not type the braces.
| Or. A vertical bar ( | ) separates alternative elements. Type any one of the elements. Do not type the vertical bar.
... Repeatable. An ellipsis ( ... ) indicates that you can repeat the syntax element as often as required.

Description

The until() step is a step modulator, a helper step for another traversal step. Its main use is to turn a repeat() step into a do-while loop (if used after the repeat() step) or a while-do loop (if used before the repeat() step). A predicate or traversal can be used in an until() step to cause the loop to complete only if the predicate or traversal is true.

Examples

An example that repeats through all the outgoing knows adjacent vertices of John Doe until the simple paths are exhausted:
g.V().hasLabel('person','name','John Doe').
  repeat(out('knows').dedup().
         aggregate('x').
           by(project('person','level').
                by('name').
                by(loops())
           )
    ).
    until(__.not(out('knows').simplePath())).
  cap('x').next()