【发布时间】:2017-04-05 14:45:47
【问题描述】:
在分配参数值时,Cypher 官方文档似乎不一致且具有误导性。我们在 refcard 中有以下示例:
SET n.property1 = $value1
其中 value1 是定义的参数
{
"value1": somevalue
}
但是,如果您使用此 SET 语法,则会收到未定义的错误 value1。正确的语法似乎是:
SET n.property1 = {value1}
如果它是 MATCH 查询,则参数如下所示:
{
email: someemail
}
注意电子邮件周围没有引号 因此,如果您有一个带有参数的 MATCH 和 SET 查询,您的参数定义如下所示:
{
email: someemail,
"status" : somestatus
}
有人可以解释这种明显的不一致吗?
编辑: 这也是 neo4j 文档中的一个示例:
在 SET 子句中使用参数:
{
"surname" : "Taylor"
}
MATCH (n { name: 'Andres' })
SET n.surname = $surname
RETURN n
这将返回未定义的姓氏。
【问题讨论】:
-
您使用的是什么版本的 Neo4j? Cypher 中参数的
$语法在 3.x 中引入 -
我使用的是 3.0.8 和 3.1
-
根据this,
$语法从 3.1 开始有效。你能说明你是如何传递参数的吗? -
@cybersam 你也许是对的。我实际上还没有运行 3.1 测试。所以威廉所说的 3.x 是不正确的....应该是 3.1+。为了让它工作,我必须使用我看到的文档中没有说明的 {value} .....也许在其他一些文档中。在为参数赋值时,引号(“”)的不同用法又如何呢?
-
报价部分取决于您用于查询的语言。你能显示你用来传递参数的代码吗?