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

本文关键字:添加 节点 关系 事务 一个 neo4jclient 使用 | 更新日期: 2023-09-27 18:13:42

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

使用变异密码查询,可以在一次调用中创建多个节点和关系。我想创建一个类似于neo4j附带的电影示例数据的查询,以便它在一个post到REST API中创建多个节点和关系。

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

我已经看了下面的文档,但是我没有看到我所追求的查询类型的示例。我是新手,所以可能我错过了。

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

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

通常有两种方法。首先是对多个查询使用批处理,这是neo4jclient不支持的。查看源代码可以发现有某种批处理支持(如GraphClient.ExecuteBatch方法),但这些都是私有的。

第二种方法是通过将每个节点作为参数添加来构建Cypher查询,这将产生如下所述的请求。代码看起来像这样:

var queryBuilder = client.Cypher.
    Create ("(movie:Movide {newMovie})");
foreach (Movie movie in movies) {
    queryBuilder = queryBuilder.WithParam ("newMovie", movie);
}
queryBuilder.ExecuteWithoutResults ()

如果列表中有多个元素,则会抛出ArgumentException: "具有给定键的参数已在查询中定义"。

所以你可能被这些讨厌的变通方法之一困住了:

  1. 构建具有多个(索引)参数的查询
  2. 对一个节点执行一个查询
  3. 手动查询,不推荐使用。

在我看来,这是一个值得向雷迪报告的问题。