2017-05-03 1 views
0

与えられるグラフ: enter image description here 第三者がパラメータを所有している場合と所有していない場合があります。orientdb stopいくつかの条件でトラバース

Aパラメータはコンテキストコード(:CREATE VERTEX Parameter SET context='val1', code='val2', value='val3' EX)で表されます。 Aサードパーティタイプで表される(例:CREATE VERTEX ThirdParty SET type=7

頂点#40から出発:0、iは、所定のパラメータの値(たとえば、コンテキスト=「VAL1」とコードとパラメータを取得したいです=」 val2 ')(このノードは異なるパラメータを持つことができます)。ノードが与えられたパラメータを所有していない場合、私は与えられたパラメータの値を見つけるまで、このノードの親を1つずつ探します。

私はこのクエリを使用してみました:

SELECT parameter.value FROM (MATCH {class:ThirdParty, 
      where: (type = 7)}.in('parent_of') 
      {while: (out('owns').size() == 0), 
      where: (out('owns').size() > 0)}.out('owns') 
      {as: parameter} RETURN parameter) 

が、問題はThirdParyが異なる コンテキストコードで、複数のパラメータを持つことができ、私は を変更する方法を見つけることができない、ありますクエリ内のの部分は、指定されたパラメータ(context = 'val1'およびcode = 'val2')と比較されます。

答えて

1

クエリは、このいずれかでなければなりません:

それは、クエリコンテキストを参照し、あなたが持っていないので、あなたは、プロパティ名として「コンテキスト」を使用することはできません
SELECT parameter.value FROM (
    MATCH 
     {class:ThirdParty, where: (type = 7)} 
     .in('parent_of') 
     { 
     while: (
      not (
      out('owns').context contains "val1" 
      AND 
      out('owns').code contains "val2" 
      ) 
     ), 
     where: (
      out('owns').context contains "val1" 
      AND 
      out('owns').code contains "val2" 
     ) 
     }.out('owns') 
     {as: parameter, where:(code = "val2" and context = "val1")} 
    RETURN parameter 
) 

しかし

  1. あなたが期待した結果

  2. 2.2.19のバグでこのクエリが壊れてしまったので、修正して2.2.xブランチに修正を加えました。修正は2.2.20でリリースされる予定です。それまでの数時間でここにスナップショットが見つかりますhttps://oss.sonatype.org/content/repositories/snapshots/com/orientechnologies/orientdb-community/2.2.20-SNAPSHOT/

+0

ありがとうございました!あなたが修正したバグは、エラー: 'java.lang.UnsupportedOperationException:Implement SuffixIdentifier! '?なぜなら、 'out( 'owns')という部分を削除してクエリを実行すると、' while'と 'where'節にある' val1' AND'が 'UnsupportedOperationException'になります。 – mabbas

+0

まさに私がやった修正その問題を解決しました –

+0

私はちょうどスナップショットを使ってテストをしました。与えられたパラメータの値を取得するために 'where:(code =" val2 ")'を '{as:parameter}'句に追加するだけでした。さもなければ、クエリはノードに接続されたすべてのパラメータの値を返します。ご協力ありがとうございました!私はorientdbで昨日仕事を始めました。私はすでに大ファンです! :) – mabbas

関連する問題