如何使用 neo4jclient 检索特定的 neo4j 节点 属性?

How do I retrieve a specific neo4j node property using neo4jclient?

我将一些数据存储为 neo4j 节点。此节点有一些 属性 未被关联的 C# class 描述,因此当 neo4jclient 查询 returns.[=16 时不会自动映射回 class =]

例如,这个 C# class:

public class Node {
    public string name;
    public int number;
    public CustomClass data;
}

存储在 neo4j 中,然后使用以下 neo4jclient fluent 代码检索:

var query = client.Cypher
    .Match("(n:Node)")
    .Return(n => n.As<Node>())
    .Results;

将使用名称和编号填充节点对象,但保留对 CustomClass 对象的空引用。

为了解决这个问题,我将 CustomClass 序列化为 JSON 字符串,并将其作为字符串 属性 存储在 neo4j 中。为了反序列化这个 JSON class,我需要从存储在 neo4j.

中的节点中检索 JSON 字符串 属性

neo4jclient 文档推荐如下:

.Return(() => new {
    JSONString = Return.As<string>("matchedNode.JSONProperties")
})

但是这是无效代码。 JSONString = 之后的 Return 在该上下文中不存在。

查看答案。

如何从数据库中获取 JSONPropeties 字符串?

给定的代码完全符合预期,您只需要包含正确的 neo4jclient 参考即可。在这种情况下是

using Neo4jClient.Cypher;

这样,Return 就不再是未定义的了。如果您需要访问所有匹配的元素,这也是 All class 所在的位置。

根据您的回答,除了添加

using Neo4jClient.Cypher

您也可以选择仅 return Node 属性,如下所示:

var query = client.Cypher
    .Match("(n:Node)")
    .Return(n => n.As<Node>().name) //<-- returning just the property
    .Results;