Recursive Traversals
Recursive traversals allow iterative processing over traversal paths.
Recursive traversals allow iterative processing over traversal paths. Prior to trying out branching traversals shown here, you must create the data as described in Simple Traversals.
This recursive traversal example returns the names of vertices that are two outgoing steps
from the
author
vertex named Julia CHILD
using the
times(2)
step. Books, meals, and ingredients are returned by this query.
However, if you tried to run this recursive query, you probably discovered that many indexes
were required. A person
in the food
graph must index all
edges to any vertex label to execute. Using the repeat()
step should be
carefully targeted unless exploration is the intended use and the graph is
small.// Return the names of the vertices 2 outgoing steps from the vertex named "Julia CHILD". // This will likely include cookbooks, meals, and ingredients g.V().has('name','Julia CHILD').repeat(out()).times(2).valueMap()The output for this traversal lists each result:
==>{ingred_id=[3001], name=[beef]}
==>{ingred_id=[3002], name=[onion]}
==>{ingred_id=[3003], name=[mashed garlic]}
==>{ingred_id=[3003], name=[mashed garlic]}
==>{ingred_id=[3004], name=[butter]}
==>{ingred_id=[3005], name=[tomato paste]}
==>{type=[lunch], meal_id=[4001]}
==>{type=[lunch], meal_id=[4001]}
==>{ingred_id=[3008], name=[olive oil]}
==>{ingred_id=[3008], name=[olive oil]}
==>{ingred_id=[3010], name=[green beans]}
==>{ingred_id=[3011], name=[tuna]}
==>{publish_year=[1961], name=[The Art of French Cooking, Vol. 1], book_id=[1001], category=[[French, cooking, general]]}
==>{publish_year=[1961], name=[The Art of French Cooking, Vol. 1], book_id=[1001], category=[[French, cooking, general]]}
==>{ingred_id=[3012], name=[tomato]}
==>{ingred_id=[3013], name=[hard-boiled egg]}
==>{ingred_id=[3007], name=[zucchini]}
==>{ingred_id=[3006], name=[eggplant]}
==>{ingred_id=[3009], name=[yellow onion]}