2012-05-09 50 views
0

我知道如何獲得相關節點,並指定關係來查找這些節點,但似乎沒有任何機制可以自己找到關係?Neo4JClient:如何找到給定節點的關係列表(任何類型)?

通過Neo4JClient的源代碼,您可以找到類型「關係」,但只有在創建關係時才使用,而不是在檢索它們時使用。

檢索時,可以得到一個「RelationshipInstance」,但它由一個RelationshipReference和兩個NodeReferences組成。除了與每個關聯的唯一整數ID之外,它們都沒有與它們關聯的任何數據。

回答

3

這聽起來像你想訪問存儲在關係上的數據。我們稱這些爲「有效載荷」。

您可以查詢他們像這樣:

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 
    }); 

更可能的是,你要使用的歐特過載能過濾按類型的關係,如:

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

如果使用沒有泛型類型參數的OutE的重載,你將得到引用,但沒有有效載荷數據(因爲我們不知道將數據反序列化成什麼)。

HTH。

- Tatham

+0

如何獲得TypeKey值?我想用它們的typeKey值來獲得這個節點的所有關係。理想情況下,我想要做的是能夠智能地更新關係。我可以在一個.Create()調用中添加關係,但我不能單獨更新關係。 –

+0

我還嘗試使用從各種IRelationship接口或OutE >派生的OutE 或OutE ,但都未能進行編譯,因爲它們沒有實現公共無參數構造函數。 –

+0

嗯...仔細看看關係我是否需要將TypeKey值作爲有效載荷「TData」以便能夠在OutE <>中反序列化? –

相關問題