如何使用 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;
我将一些数据存储为 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;