2017-12-06 8 views
1
gremlin> a = graph.addVertex("name", "alice") 
gremlin> b = graph.addVertex("name", "bobby") 
gremlin> c = graph.addVertex("name", "cindy") 
gremlin> d = graph.addVertex("name", "david") 
gremlin> e = graph.addVertex("name", "eliza") 
gremlin> a.addEdge("rates",b,"tag","ruby","value",9) 
gremlin> b.addEdge("rates",c,"tag","ruby","value",8) 
gremlin> c.addEdge("rates",d,"tag","ruby","value",7) 
gremlin> d.addEdge("rates",e,"tag","ruby","value",6) 
gremlin> e.addEdge("rates",a,"tag","java","value",9) 

g.V().has('name', 'alice').repeat(out()).times(6).cyclicPath().path().by('name') 

Ich möchte mit Alice Knoten enden. und ich möchte den ganzen Schritt nicht wiederholen wollen, um Zeit als 6 zu spezifizieren. Die Anforderung ist, ich möchte die Schleife von Alice bekommen oder alle Schleifen aus dem Graphen bekommen.Wie kann ich bis in Janusgraph verwenden?

Antwort

3

Sie können in den TinkerPop Rezepte zum Cycle Detection Abschnitt beziehen - es passt sich ziemlich einfach an Ihre Probe Graph:

gremlin> g.V().has('name', 'alice').as('a'). 
......1> repeat(out().simplePath()). 
......2>  emit(loops().is(gt(1))). 
......3> both().where(eq('a')). 
......4> path(). 
......5>  by('name'). 
......6> dedup(). 
......7>  by(unfold().order().dedup().fold()) 
==>[alice,bobby,cindy,david,eliza,alice] 
+0

Dank. Ich habs. – Jeff

+0

Aber ich habe auch unter script.gV(). Hat ('name', 'alice'). Repeat (out()). Bis (hat ('name', 'alice')). CyclicPath(). Limit (5) .path(). By ('name') – Jeff

+0

Aber ich möchte auch den Wert von jedem Pfad bekommen. Kannst du mir bitte dabei helfen? – Jeff

Verwandte Themen