【问题标题】:How to use parameter in neo4j cypher query如何在 neo4j 密码查询中使用参数
【发布时间】: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} .....也许在其他一些文档中。在为参数赋值时,引号(“”)的不同用法又如何呢?
  • 报价部分取决于您用于查询的语言。你能显示你用来传递参数的代码吗?

标签: neo4j cypher


【解决方案1】:

您可以在 neo4j 桌面浏览器中使用 :params 设置参数。

例如,

  1. 执行,:params {surname: 'Taylor'}
  2. 执行,MATCH (n { name: 'Andres' }) SET n.surname = $surname RETURN n

有关参数的更多信息,请使用:help params

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多