2012-05-09 45 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 <>中反序列化? –

相关问题