2017-12-06 22 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') 

나는 앨리스 노드로 끝내고 싶습니다. 모든 단계를 반복하여 6을 지정하지 않으려합니다. 요구 사항은 앨리스의 모든 루프를 가져 오거나 그래프의 모든 루프를 가져오고 싶습니다.janusgraph에서까지 어떻게 사용할 수 있습니까?

답변

3

당신은 TinkerPop 조리법의 Cycle Detection 섹션을 참조 할 수 있습니다 - 당신의 샘플을 그래프로 쉽게 상당히 적응 :

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

감사합니다. 알았다. – Jeff

+0

그러나 아래에 script.gV()가 있습니다 ('name', 'alice').) 반복 (out()). (has ('name', 'alice')). cyclicPath(). limit 5) .path(). by ('name') – Jeff

+0

하지만 모든 경로의 값을 얻고 싶습니다. 이걸 좀 도와 주실 수 있습니까? – Jeff