`apoc.cypher.run` 与参数的正确用法是什么?

What is the proper usage of `apoc.cypher.run` with params?

我是 neo4j 的新手,想使用 apoc.cypher.run(cypher, params) 执行密码语句,使用 params 参数将语句中的占位符替换为动态内容。

不幸的是,https://neo4j.com/labs/apoc/4.1/overview/apoc.cypher/apoc.cypher.run/#usage-apoc.cypher.run 的文档没有显示如何正确使用 params 的示例。

我尝试了以下方法:

CALL apoc.cypher.run("MATCH (n) WHERE n:$label RETURN n", {label: "MyLabel"})
YIELD value
RETURN value.n

但我收到以下错误:

Failed to invoke procedure apoc.cypher.run: Caused by: org.neo4j.exceptions.SyntaxException: Invalid input '$': expected whitespace or a label name (line 1, column 46 (offset: 45)) " WITH $label as label MATCH (n) WHERE n:$label RETURN n"

谁能告诉我正确的做法?

以下三个示例可能会有帮助:

"查询字符串连接" 基于先前语句的结果(用 WITH "Person" as label 模拟)

WITH "Person" as label
CALL apoc.cypher.run("MATCH (n) WHERE n:"+ label + " RETURN n",{})
YIELD value
RETURN value

"查询参数" 进入 "查询字符串连接"

:param label=> "Person" //Set query parameter for testing in neo4j browser:
CALL apoc.cypher.run("MATCH (n) WHERE n:"+ $label + " RETURN n",{})
YIELD value
RETURN value

"Parameterized" 但它必须用作参数

CALL apoc.cypher.run("MATCH (n) WHERE $l in labels(n) RETURN n",{ l:"Person"})
YIELD value
RETURN value

在您的示例中,密码中不允许 where n:$label 部分。