使用 Bolt 使用 neo4jclient 批量插入节点
Batch insert nodes with neo4jclient using Bolt
我正在尝试使用 neo4jclient 将 N 个节点导入到 neo4j。我正在使用托管在 Azure 中的 neo4j 集群,因此我必须使用 Bolt 协议。所以我用的是neo4jclient的RC1
基于我将在下面包含的示例,我有以下代码:
BoltGraphClient client =
new BoltGraphClient(new Uri("bolt://myserver:7687"), "neo4j", "mypwd");
client.Connect();
var nodes = new List<myNode>()
{
new myNode()
{
id = "a",
patientKey = "aaa",
patient_fname = "John",
patient_lname = "Doe"
},
new myNode()
{
id = "b",
patientKey = "bbb",
patient_fname = "Jane",
patient_lname = "Doe"
}
};
client.Cypher
.Create("(n:Node {nodes})")
.WithParams(new { nodes })
.ExecuteWithoutResults();
我收到以下错误:
Newtonsoft.Json.JsonSerializationException occurred
HResult=0x80131500
Message=Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'System.Collections.Generic.Dictionary`2[System.String,System.Object]' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
我相信我遵循了以下应该有效的答案:
我正在使用 Neo4j 3.2.6、Neo4jClient 3RC1 和 c# 4.6
如果一切正常,那么我将为 Neo4jClient 创建一个缺陷。
Neo4jClient 3.0.0-RC2
刚刚发布。我无法获得您特别需要 运行 的查询,所以我将使用它,但我从 Neo4jClient
和官方 Neo4j.Driver
中得到相同的错误,所以我假设这是一个意味着 Cypher 不再有效的变化。
但是,您会发现 RC2
您可以这样做:
client.Cypher
.Unwind(nodes, "node")
.Create("(n:Node)")
.Set("n = node")
.ExecuteWithoutResults();
这就是我做你想做的事情的方式。
我正在尝试使用 neo4jclient 将 N 个节点导入到 neo4j。我正在使用托管在 Azure 中的 neo4j 集群,因此我必须使用 Bolt 协议。所以我用的是neo4jclient的RC1
基于我将在下面包含的示例,我有以下代码:
BoltGraphClient client =
new BoltGraphClient(new Uri("bolt://myserver:7687"), "neo4j", "mypwd");
client.Connect();
var nodes = new List<myNode>()
{
new myNode()
{
id = "a",
patientKey = "aaa",
patient_fname = "John",
patient_lname = "Doe"
},
new myNode()
{
id = "b",
patientKey = "bbb",
patient_fname = "Jane",
patient_lname = "Doe"
}
};
client.Cypher
.Create("(n:Node {nodes})")
.WithParams(new { nodes })
.ExecuteWithoutResults();
我收到以下错误:
Newtonsoft.Json.JsonSerializationException occurred HResult=0x80131500 Message=Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'System.Collections.Generic.Dictionary`2[System.String,System.Object]' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly. To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
我相信我遵循了以下应该有效的答案:
我正在使用 Neo4j 3.2.6、Neo4jClient 3RC1 和 c# 4.6
如果一切正常,那么我将为 Neo4jClient 创建一个缺陷。
Neo4jClient 3.0.0-RC2
刚刚发布。我无法获得您特别需要 运行 的查询,所以我将使用它,但我从 Neo4jClient
和官方 Neo4j.Driver
中得到相同的错误,所以我假设这是一个意味着 Cypher 不再有效的变化。
但是,您会发现 RC2
您可以这样做:
client.Cypher
.Unwind(nodes, "node")
.Create("(n:Node)")
.Set("n = node")
.ExecuteWithoutResults();
这就是我做你想做的事情的方式。