2016-10-24 4 views
2

에 연결 가장자리에서 속성을 포함 나는 다음과 같은 경우가 있습니다OrientDB 특정 정점

그래서 클래스 V1의 두 정점 타입 V2의 또 다른 정점에 연결되어
 (p:p1) 
    V1 ---E1---\ 
       \ 
       V2 (with properties) 
      /
    V1 ---E1---/ 
     (p:p2) 

, 양쪽 가장자리가이 같은 클래스 E1의 있습니다를 속성 "p".

  • 가장자리 클래스 E1
  • 에 의해 선택된 V1에 연결되어있는 (모든 속성 포함) 모든 V2 기록을 읽어

    • 대상 (RID에 의한)는 V1 인스턴스 : 나는 쿼리를 원하는

    • 반환되는 문서에서 연결 E1 가장자리의 속성 p도 포함합니다.

    나는 함께 시도 :

    SELECT *,in('E1')[p] as p FROM (SELECT EXPAND(out('E1')) FROM <V1-rid>) UNWIND p 
    

    그러나 투사가 모두 E1 가장자리에서 값을 반환하기 때문에 그것은 물론이 개 결과를 줄 것이다. 난 단지 내 선택한 V1과 V2 사이의 가장자리를 P 형태로 inlcude 싶어요.

    나는 V2에 포함될 필요가있는 몇 가지 다른 연결점이 있지만 질문의 복잡성을 줄이기 위해 문제를보다 정확하게 지정하고 싶었고 대답을 방해하지 않을 것이라고 생각합니다.

    업데이트

    명확한 설명 : V2는 속성이있는 경우 v2p1 :, v2p2, 결과 기록이 보일 것입니다, 그래서 내가, 추가 속성 "P"와 전체 V2-기록 할 결과를 원하는

    예 :

    { 
        "v2p1": <value>, 
        "v2p2": <value>, 
        "p": <value> 
    } 
    

    마지막 "p"값은 가장자리에 있고 다른 속성은 실제 V2 레코드의 값입니다.

    +0

    을 나는 또한 당신이'사용할 수 있습니다 V2를 e1_p SELECT 당신이 http://orientdb.com/docs/2.2/SQL-Match.html –

    답변

    2

    이 시도 :

    select *,traversedEdge(-1).p as p from(traverse outE('E1'),inV('E1') from #21:0) where @class='V2' 
    
    +0

    이것은 정확히 내가 필요로하는 것, 감사합니다. – dargolith

    4

    당신은 내가 그만큼 분명 희망이 쿼리

    SELECT FROM (
    MATCH {CLASS:v1, AS:v1, WHERE: (@rid=#29:0)}.outE('e1'){AS:e1}.inV('e1'){AS:v2} RETURN v1, e1.p, v2 
    ) 
    

    를 사용할 수 있습니다.

    +0

    를 사용할 수 있다고 생각 *에서. ('모든 속성을 직접 얻으려면 –

    +0

    답장을 보내 주셔서 감사합니다. 매칭 구문이 매우 유용합니다. 그러나 확장 된 V2 레코드 (모든 속성)를 반환하고 싶지만 추가 된 속성은 "p "E1에서. 내 질문에 대한 결과를보다 명확하게 업데이트했습니다. – dargolith

    +0

    v2. *를 사용하는 @IvanMainetti는 속성 이름을 접습니다 (접두사는"v2_ "임). 그 주위에 방법이 있습니까? 실제 V2 레코드가 필요합니다. 단 하나의 추가 속성 만 필요합니다. p (연결 가장자리에서). – dargolith

    관련 문제