2017-12-19 1 views
2

그래프에서 'name'(문자열) 및 'roll-no'(int) 특성을 갖는 각 노드와 함께 두 개의 노드 'A'와 'B'가 있다고 가정 해 봅니다. 쿼리를 작성하여 노드 속성 정보를 아래 형식으로 가져올 수 있습니다. 출력에는 데이터 유형 정보와 중첩 된 json 구조가 필요하지 않습니다.간단한 형식으로 정점 특성 정보 얻기

[{name=[apple], roll-no=[10,20]}, {name=[mango], roll-no=[30]}] 

GraphSON을 일반 JSON으로 변환하는 방법을 묻는 것 같아요.

+0

저는 tinkerpop3을 사용하고 있습니다. 언급하는 것을 잊어 버렸습니다. – user1689963

답변

2

당신은이 Map에 요소를 project() 수 있습니다

gremlin> g.V(1).project('name','age').by('name').by('age') 
==>[name:marko,age:29] 

당신이 볼 수 있듯이,이 방법을 복용하는 것은 당신이의 속성을 제어 당신이지도가 더 세밀한 방식으로 생산하는 방법을 제어 할 수 있습니다 by() 스텝 모듈레이터.

gremlin> g.V().local(properties().group().by(key()).by(value())) 
==>[name:marko,age:29] 
==>[name:vadas,age:27] 
==>[name:lop,lang:java] 
==>[name:josh,age:32] 
==>[name:ripple,lang:java] 
==>[name:peter,age:35] 

: 당신이 뭔가를 할 수있는 프로젝트를 사용하지 않고

gremlin> g.V().project('name','age'). 
......1> by('name'). 
......2> by(coalesce(values('age'),constant('none'))) 
==>[name:marko,age:29] 
==>[name:vadas,age:27] 
==>[name:lop,age:none] 
==>[name:josh,age:32] 
==>[name:ripple,age:none] 
==>[name:peter,age:35] 

: - 반환 정점 균일 프로퍼티 키가없는 경우 당신은 어떤 식 으로든이 차지해야합니다 여기에 하나의 가능성이다 project()만큼 명확하지는 않으며 일반적으로 권장하지 않는 모든 속성을 갖지만 분명히 그 방법이 효과적입니다. 나는 당신이 다음과 같이 얻을 수있는 속성을 아이템화할 수 있었다고 생각합니다 :

gremlin> g.V().local(properties('name','age').group().by(key()).by(value())) 
==>[name:marko,age:29] 
==>[name:vadas,age:27] 
==>[name:lop] 
==>[name:josh,age:32] 
==>[name:ripple] 
==>[name:peter,age:35] 
+0

단일 노드에서는 작동하지만 다중 노드에서는 작동하지 않습니다. by ('name') by ('age') – user1689963

+0

여러 정점에서 작동하지만 특정 속성이없는 정점을 고려해야합니다. . 내 대답이 약간 업데이트되었습니다. –

+0

누락 된 속성을 고려해야 할 경우'project()'가 좋습니다. 그렇지 않으면'valueMap ("name", "age")'를 사용합니다. 'properties (...). group(). by (...)'은 나에게 조금 복잡해 보입니다. –