2016-09-29 3 views
2

scala gremlin을 사용하여 정점에서 나가는 모든 egdes의 모든 정점 레이블 목록을 가져와야합니다. 정점 outE가 B로 데, C, D :정점에서 모든 나가는 모서리의 모든 정점을 얻는 방법 스칼라 gremlin

내 코드

val names :ListBuffer[String] = ListBuffer() 
val toList: List[Vertex] = graph.V().hasLabel(100).outE().outV().toList() 
for(vertex <- toList){ 
     names += vertex.label() 
    } 

그것의 예는 모든 정점 에 같은 레이블 이름을 반환 아래처럼 보인다.

ListBuffer(100, 100, 100) 

아무것도 내가 놓친 거지 : 그것은 A. 출력의 레이블을 반환?

답변

2

마지막으로 잘못된 정점을 묻습니다. 솔직히, 나는 종종 같은 실수를 저지른다. 당신이 나를 좋아하고 자주 inV() 혼란을 얻을 outV() 당신이 반대 정점을 얻을 수 otherV를 사용할 수있는 경우

graph.V().hasLabel(100).outE().inV().label().toList() 

: 어쩌면 당신이 찾고 순회이다. 당신이 원하는 지정할 필요가 없습니다 대신 outE()out()를 사용하여

graph.V().hasLabel(100).out().label().toList() 

: 그래서 같이 : 마지막으로

graph.V().hasLabel(100).outE().otherV().label().toList() 

당신도 명시 적으로 모서리 부분을 명시하지 않음으로써 당신의 통과를 줄일 수 있습니다 버텍스, out()은 버텍스를 직접 가져옵니다.

+0

감사합니다. 완벽하게 작동합니다. 또한 나는 1 더 관련이 드롭 에지. 내 쿼리는 이렇게 보입니다. 'graph.V(). hasLabel (100) .otherV(). hasLabel (100) .outE(). drop()'. 주어진 두 꼭지점 사이의 가장자리를 삭제해야합니다. 잘못된 것처럼 보입니다. – Gopi

+0

'inE()'또는 outE()를 사용하여 명시 적으로 가장자리를 넘기지 않도록 지정할 때'otherV()'를 사용할 수 없습니다. 당신이 찾고있는 것이라고 생각합니다 :'graph.V(). hasLabel (100) .outE(). drop(). iterate()'. 끝까지 반복해야합니다. –

+0

단일 쿼리에서 에지 속성 값을 가져올 수 있습니까? 주어진 꼭지점 A가 일부 속성 값을 사용하여 B, C, D의 가장자리를가집니다. 만약 Vertex A가 주어진다면, 나는 edge 속성 값과 꼭지점 라벨을 set 또는 map으로 가져와야한다. – Gopi

관련 문제