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
或其他东西。
始终注意查询在查询的各个阶段生成了多少行,因为您的操作(匹配、创建等)的执行次数与行数一样多。
我正在运行进行以下 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
或其他东西。
始终注意查询在查询的各个阶段生成了多少行,因为您的操作(匹配、创建等)的执行次数与行数一样多。