2017-12-05 24 views
0
In JanusGraph I have 4 nodes. 
A(name=alice) -> B 
B -> C 
C -> D 
D -> A 

I want to get all the cycles from node A. 

g.V().has('name', 'alice').both().both().cyclicPath().path().by('name')어떻게 연결된 모든 버텍스를 순환시킬 수 있습니까?

내가> A와 A-> D->은을 A-> B-를 얻을 수 있습니다. 그러나 나는 A-> B-> C-> D-> A를 얻을 수 없다. 정점 A에서 정점 A까지의 모든 경로를 얻고 싶습니다. 그루비 언어를 사용하여 어떻게 얻을 수 있습니까?

답변

3

both().both()으로 "alice"에서 두 번 이동하므로 길이는 "alice"정점과 "alice"에서 떨어진 각 단계의 두 정점을 포함하는 길이 3이 될 수 있습니다 (즉 both()은 한 단계입니다. 두 번째 both()은 다음 단계입니다). 만약 당신이 "D"를하고 싶다면 당신은 아직 또 다른 both()을 추가하여 Gremlin이 다른 가장자리들을 가로지를 수 있고 또 다른 "alice"를 "D"에서 되 찾을 수 있다고 생각할 것입니다. 당신은 단순히 repeat()을 사용할 수

또는 : 나는 멀리 "앨리스"에서 얼마나 많은 단계를 정의하는 times(4)로 루프를 제어

g.V().has('name', 'alice'). 
    repeat(both()).emit().times(4). 
    cyclicPath(). 
    path().by('name') 

주 나는 both()을 통과하고 싶었다. until()을 사용하여 루프 종료를 제어하는보다 동적 인 방법을 제어 할 수도 있습니다. 자세한 내용은 repeat()을 참조하십시오.