2013-10-22 4 views
0

gremlin 쿼리를 작성하여 SQL의'in '절과 비슷한 다른 쿼리의 결과 집합에있는 값을 가진 모든 노드를 찾으려고합니다. 예를 들어Gremlin 이에 상응하는 SQL in '절

: 내 IN의 값으로 내 그래프의 선형 스캔을 할 수

select * from myTable 
where someVal in (select someVal from otherTable) 

이 질문은 this 질문의 중복,하지만 거기에 주어진 해답이 될 수는 나에게 적용 할 수 없습니다 절은 정적 목록이 아닌 쿼리의 동적 결과입니다.

답변

2

retain을 사용하려고합니다. 기본적으로 첫 번째 쿼리의 결과를 저장하고 일치하는 파이프 라인을 통과하는 항목이 유지되도록 retain 단계의 입력으로 사용합니다. 간단한 예 :

gremlin> x=[] 
gremlin> g.v(1).out.aggregate(x).out.retain(x) 
==>v[3] 

또는 명명 된 단계를 사용할 수 있습니다 :

gremlin> g = TinkerGraphFactory.createTinkerGraph() 
==>tinkergraph[vertices:6 edges:6] 
gremlin> firstResults = g.v(1).out.toList() 
==>v[2] 
==>v[4] 
==>v[3] 
gremlin> g.V.retain(firstResults) 
==>v[3] 
==>v[2] 
==>v[4] 

retain 단계는 종종 aggregate와 함께 사용되는 그렘린 더 많은 SQL 변환에

gremlin> g.v(1).out.as('x').out.retain(x) 
==>v[3] 

을 당신은 체크 아웃 할 수 있습니다 : SQLToGremlin.com.