2016-09-08 14 views
1

接続されています。2つの頂点からエッジを選択するためにどのように私はそれが接続する2つの頂点からエッジを選択するためのフォーマットを把握しようとしています

エッジは、クラス「接続」であり、2つの「ノード」クラスの頂点を接続します。送信元ノードは#11:6(ユニークインデックスフィールドip = '10 .64.32.100 ')で、宛先は#11:7(ip = '10 .79.215.231')です。 Connectionクラスには、Connection.inプロパティとConnection.outプロパティにUNIQUEインデックスがあります。

私はすべてが空のセットを返すことを、次のクエリを試してみました:私は、SELECTノード文がないことを保証するためにチェックInfactは(#11:6)正しいRID返してきた

SELECT FROM Connection WHERE OUT(Node) = (SELECT FROM Node WHERE ip = '10.64.32.100') 

SELECT FROM Connection WHERE (SELECT FROM Node WHERE ip = '10.64.32.100') IN OUT(Node) 

SELECT FROM Connection WHERE #11:6 IN OUT(Node) 

SELECT FROM Connection WHERE OUT(Node) = #11:6 

より大きなコンテキストは、エッジクラス 'Connection'の時間フィールドを更新することです。接続にはEMBEDDEDLIST回のタイムスタンプがあります。 pyorientを使用して、呼び出し元のコードは次のとおりです。

try: 
    client.command("CREATE EDGE Connection FROM {0} TO {1} CONTENT {2}".format(src_str, dst_str, edge_cont)) 
except pyorient.exceptions.PyOrientORecordDuplicatedException: 
    client.command("UPDATE Connection ADD times = {0} WHERE {1}".format(time_list, <<!!QUERY GOES HERE!!>>) 

私はUPDATEをトリガするためにキャッチされた例外を使用していますので、あなたは、上から見ることができるように、私は既存の一意のインデックス付き接続の@ridを持っていませんしたがって、新しい接続を追加するConnectionオブジェクトを指定するSELECT文が必要です。別の解決方法は、すでに存在するConnectionが存在する場合、その@ridを返す方法を理解することです。私はそれをやる方法も知らない。

誰も私には2つのだけの接続の頂点を使用して所望のエッジを返すために、正しいSELECT文を見つけることができますか?

答えて

4

は、この文字列で検索してください:

SELECT FROM Connection WHERE OUT = #11:6 AND (SELECT @rid FROM Node WHERE ip = "10.79.215.231") IN IN

はそれがお役に立てば幸いです。

+1

はい、うまくいきました。 'SELECT @ FROM'から 'SELECT FROM'までは違いはありませんでしたが、 'IN(ノード)'を 'IN'に変更するとエラーが修正されました。 – kingledion

関連する問題