`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
部分。
我是 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
aslabel
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
部分。