你如何使用neo4j的参数?

时间:2014-03-09 00:12:48

标签: neo4j

我正在查看neo4j的文档,我发现在创建对象时我可以使用参数。特别是当我看到这个page时,我看到了代码:

{
  "props" : {
    "position" : "Developer",
    "name" : "Andres"
  }
}

查询。

CREATE ({ props })

然而,当我使用Web界面访问本地计算机上的neo4j数据库时,我不知道如何指定参数。只需复制/粘贴JSON对象就会产生错误。我在页面上看到了

  

究竟如何提交它们取决于使用的驱动程序。

但是如何在命令行/ web界面上使用它们?

2 个答案:

答案 0 :(得分:7)

Cypher支持使用以JSON格式提交的参数进行查询。例如,以下是REST API用法。有关Java嵌入式API,请参阅以下文档:http://docs.neo4j.org/chunked/milestone/tutorials-cypher-parameters-java.html

MATCH (x { name: { startName }})-[r]-(friend)
WHERE friend.name = { name }
RETURN TYPE(r)

示例请求

POST http://localhost:7474/db/data/cypher
Accept: application/json; charset=UTF-8
Content-Type: application/json 

{
  "query" : "MATCH (x {name: {startName}})-[r]-(friend) WHERE friend.name = {name} RETURN TYPE(r)",
  "params" : {
    "startName" : "I",
    "name" : "you"
  }
}

回复示例

200: OK
Content-Type: application/json; charset=UTF-8

{
  "columns" : [ "TYPE(r)" ],
  "data" : [ [ "know" ] ]
}

Neo4j 2.0浏览器中的常规Cypher语句目前不支持参数。但是,您可以使用:POST语法来实现此目的。

有关通过REST API进行的Cypher查询的更多信息,请参阅文档。

http://docs.neo4j.org/chunked/milestone/rest-api-cypher.html

更新

以下查询允许您在浏览器中完成此操作,尽管这不是一种理想的体验:

:POST /db/data/transaction/commit {
    "statements": [
        {
            "statement": "MATCH (u:User {name:{username}}) RETURN u.name as username",
            "parameters": {
                "username": "my name"
            }
        }
    ]
}

答案 1 :(得分:0)

在浏览器的命令行中定义参数的语法为:params,后跟您要定义的变量,只需键入:params,您就会从命令行中了解此命令的工作方式结果提示。

对于HTTP API,在最新版本(撰写本文时为v3.5)中,请使用从https://neo4j.com/docs/http-api/current/http-api-actions/execute-multiple-statements/复制的以下语法:

{
  "statements" : [ {
    "statement" : "CREATE (n) RETURN id(n)"
  }, {
    "statement" : "CREATE (n {props}) RETURN n",
    "parameters" : {
      "props" : {
        "name" : "My Node"
      }
    }
  } ]
}