使用neo4jclient在一个事务中添加多个节点和关系

时间:2014-07-21 06:02:11

标签: c# neo4jclient

我是neo4j和neo4jclient的新手,所以请原谅我的问题是否在正确的轨道上。

通过改变cypher查询,可以在一次调用中创建多个节点和关系。我想创建一个类似于neo4j附带的电影示例数据的查询,以便在一个帖子中创建多个节点和关系到REST API。

是否可以使用neo4jclinet编写这样的查询?

我已经看过下面的文档,但我看不到我所追求的查询类型的示例。我对此很新,所以也许我错过了它。

https://github.com/Readify/Neo4jClient/wiki/cypher-examples

1 个答案:

答案 0 :(得分:1)

通常有两种方法可以做到这一点。首先是使用具有多个查询的批处理,isn't supported by the neo4jclient。查看源代码显示存在某种批处理支持(如GraphClient.ExecuteBatch方法),但这些是私有的。

第二种方法是通过将每个节点添加为参数来构建Cypher查询,这应该导致here所述的请求。代码如下所示:

var queryBuilder = client.Cypher.
    Create ("(movie:Movide {newMovie})");

foreach (Movie movie in movies) {
    queryBuilder = queryBuilder.WithParam ("newMovie", movie);
}

queryBuilder.ExecuteWithoutResults ()

然而,抛出ArgumentException:“已在查询中定义了具有给定键的参数。”如果列表中有多个元素。

所以你可能会遇到一些令人讨厌的解决方法:

  1. 使用多个(索引)参数构建查询
  2. 为一个节点执行一个查询
  3. a manual query,不鼓励。
  4. 在我看来,这似乎值得向Readify报告。