2012-05-09 15 views
0

私は関連ノードを取得し、それらのノードを見つけるために関係を指定する方法を知っていますが、関係自体を見つけるためのメカニズムはないようですね。Neo4JClient:特定のノードの関係のリストを見つけるにはどうしたらいいですか?

Neo4JClientのソースコードを見ると、「リレーションシップ」タイプが見つかりますが、リレーションシップの作成時にのみ使用され、リトリーブは取得されません。

リトリーブ時には、 "RelationshipInstance"を取得できますが、RelationshipReferenceと2つのNodeReferencesで構成されています。いずれのデータも、それぞれに関連付けられた一意の整数IDの他に関連付けられていません。

答えて

3

リレーションシップに格納されたデータにアクセスしたいと思うようです。これらを「ペイロード」と呼びます。

あなたはそうのようにそれらを照会することができます:あなたが使用している場合

client 
    .RootNode 
    .OutE<FooPayload>("HAS_FOO") 

client 
    .RootNode 
    .OutE<FooPayload>() 
    .Select(p => 
    { 
     p.Reference.Id,   // Relationship ID 
     p.StartNodeReference, // Outbound vertex 
     p.EndNodeReference,  // Inbound vertex 
     p.Data,     // Payload as FooPayload 
     p.Data.Bar    // A property in the payload 
    }); 

可能性が高く、あなたのような、タイプによって関係をフィルタリングOUTEのオーバーロードを使用したいと思いますジェネリック型パラメータなしのOutEのオーバーロードでは、参照データは取得されますが、ペイロードデータは取得されません(データをどのようにデシリアライズするかわからないため)。

HTH。

- Tatham

+0

TypeKey値はどのようにして取得できますか?私は、このNodeのtypeKey値で、すべての関係を取得したいと考えています。理想的には、関係をインテリジェントに更新できるようにすることです。 1つの.Create()呼び出しで関係を追加することはできますが、個別にを除くリレーションシップを更新することはできません。 –

+0

また、さまざまなIRelationshipインターフェイスまたはOutE >から派生するOutE またはOutE を使用しようとしましたが、パブリックパラメータレスコンストラクタを実装していないため、すべてコンパイルできませんでした。 –

+0

Hm ...関係をもっと詳しく見る OutE <>でデシリアライズできるようにするために、TypeKey値をペイロード "TData"として配置する必要がありますか? –

関連する問題