Stored procedures Neo4J/APOC-调用存储过程'APOC.cypher.doIt'后无法生成查询`

Stored procedures Neo4J/APOC-调用存储过程'APOC.cypher.doIt'后无法生成查询`,stored-procedures,neo4j,cypher,graph-databases,neo4j-apoc,Stored Procedures,Neo4j,Cypher,Graph Databases,Neo4j Apoc,我正在运行以下密码查询: WITH "CREATE (test:Test {id: 1})" AS cypher CALL apoc.cypher.doIt(cypher, {}) YIELD value CREATE (test2:Test2 {id: 2}) 之后,我运行MATCH(a)返回一个,并看到只创建了一个带有Test标签的节点。第二个CREATE语句似乎没有运行 如果我在调用之前创建Test2,它会按预期创建节点 有人能解释为什么会发生这种情况,以及在这个CALL子句之后如何继续

我正在运行以下密码查询:

WITH "CREATE (test:Test {id: 1})" AS cypher
CALL apoc.cypher.doIt(cypher, {}) YIELD value
CREATE (test2:Test2 {id: 2})
之后,我运行
MATCH(a)返回一个
,并看到只创建了一个带有
Test
标签的节点。第二个
CREATE
语句似乎没有运行

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

有人能解释为什么会发生这种情况,以及在这个
CALL
子句之后如何继续查询吗


提前谢谢

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

没有要操作的行,并且所有操作都是按行执行的,所以CREATE永远不会执行,也没有要运行它的行

您需要在执行的密码中返回一些内容,
returntrue
或其他内容


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

Perfect,就是这样!谢谢你的解释!