Neo4J / APOC - 调用存储过程`apoc.cypher.doIt`后无法构建查询

Neo4J / APOC - Cannot build query after calling stored procedure `apoc.cypher.doIt`

我正在运行进行以下 Cypher 查询:

WITH "CREATE (test:Test {id: 1})" AS cypher
CALL apoc.cypher.doIt(cypher, {}) YIELD value
CREATE (test2:Test2 {id: 2})

之后,我 运行 MATCH (a) RETURN a 发现只创建了一个带有 Test 标签的节点。第二个 CREATE 语句似乎不是 运行.

如果我在 Test2 之前创建 CALL,它会按预期创建节点。

谁能解释为什么会这样,以及如何在这个 CALL 子句之后继续查询?

提前致谢!

这里的问题是,由于在 apoc.cypher.doIt() 中执行的密码没有 return 任何行,YIELD 不产生任何结果。您可以通过将末尾的 CREATE 替换为 RETURN value 来确认这一点:没有更改,没有记录。

没有要操作的行,所有操作都是按行执行的,因此 CREATE 永远不会执行,没有行可以运行它。

你需要return你执行的密码,return true或其他东西。

始终注意查询在查询的各个阶段生成了多少行,因为您的操作(匹配、创建等)的执行次数与行数一样多。