4

我正在运行以下 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子句之后继续查询?

提前致谢!

4

1 回答 1

5

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

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

你需要在你执行的密码中返回一些东西,return true或者一些东西。

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

于 2017-05-09T21:25:49.203 回答