我知道如何获取相关节点,并指定关系以找到这些节点,但似乎没有任何机制可以自己找到关系?
查看 Neo4JClient 的源代码,您可以找到“Relationship”类型,但它仅在创建关系时使用,而不是在检索它们时使用。
检索时,您可以获得“RelationshipInstance”,但它由一个RelationshipReference 和两个NodeReferences 组成。除了与每个关联的唯一整数ID 之外,它们都没有与它们关联的任何数据。
我知道如何获取相关节点,并指定关系以找到这些节点,但似乎没有任何机制可以自己找到关系?
查看 Neo4JClient 的源代码,您可以找到“Relationship”类型,但它仅在创建关系时使用,而不是在检索它们时使用。
检索时,您可以获得“RelationshipInstance”,但它由一个RelationshipReference 和两个NodeReferences 组成。除了与每个关联的唯一整数ID 之外,它们都没有与它们关联的任何数据。
听起来您想要访问存储在关系中的数据。我们将这些称为“有效载荷”。
您可以像这样查询它们:
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 重载,例如:
client
.RootNode
.OutE<FooPayload>("HAS_FOO")
如果你在没有泛型类型参数的情况下使用 OutE 的重载,你将获得引用但没有负载数据(因为我们不知道将数据反序列化成什么)。
HTH。
——泰坦