使用Bolt批量插入带有neo4jclient的节点

时间:2017-10-16 21:00:50

标签: c# neo4j neo4jclient

我正在尝试使用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     的HResult = 0x80131500     Message =无法将当前JSON数组(例如[1,2,3])反序列化为类型System.Collections.Generic.Dictionary`2 [System.String,System.Object]&#39;因为类型需要JSON对象(例如{&#34; name&#34;:&#34; value&#34;})才能正确反序列化。   要修复此错误,请将JSON更改为JSON对象(例如{&#34; name&#34;:&#34; value&#34;})或将反序列化类型更改为实现集合接口的数组或类型(例如ICollection,IList)就像可以从JSON数组反序列化的List。 JsonArrayAttribute也可以添加到类型中,以强制它从JSON数组反序列化。

我相信我遵循了以下应该有效的答案:https://apod.nasa.gov/htmltest/gifcity/sqrt3.1mil

我使用的是Neo4j 3.2.6,Neo4jClient 3RC1和c#4.6

如果一切看起来都不错,那么我将为Neo4jClient创建一个缺陷。

1 个答案:

答案 0 :(得分:0)

Neo4jClient 3.0.0-RC2刚刚发布。我无法获得您必须运行的查询,因此我将使用该查询,但我从Neo4jClient和官方Neo4j.Driver收到相同的错误,因此我假设它的变化意味着Cypher不再有效。

但是,您可以使用RC2找到:

client.Cypher
    .Unwind(nodes, "node")
    .Create("(n:Node)")
    .Set("n = node")
    .ExecuteWithoutResults();

这就是我做你想做的事情。