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

Chr*_*kos 4 stored-procedures neo4j graph-databases cypher neo4j-apoc

我正在运行以下Cypher查询:

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

之后,我运行MATCH (a) RETURN a并看到仅Test创建了一个带有标签的节点。第二条CREATE语句似乎没有运行。

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

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

提前致谢!

Inv*_*con 5

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

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

您将需要在执行的密码中返回return true某些内容。

由于您的操作(匹配,创建等)将执行与行数一样多的时间,因此请始终注意查询在查询的各个阶段产生的行数。