如何使用API​​ REST Neo4J的子句?

时间:2017-12-19 19:08:37

标签: rest neo4j cypher

我有一个复杂的请求,在Neo4j浏览器中完全有效,我想通过API Rest使用,但有子句我无法应对。

语法如下:

  

MATCH p =() - [*] - >(node1)

     

在哪里......

     

WITH ...

     

...

     

FOREACH ... SET ...

我使用Transactional Cyper构建了查询,因为我已经被@cybersam建议了,但我无论如何都无法使用多个子句。

要给出一个例子,如果我在一行中写下这句话:

    :POST /db/data/transaction/commit {

    "statements": [
    {
       "statement": "MATCH p = (m)-[*]->(n:SOL {PRB : {PRB1}}) WHERE nodes (p) 
MATCH q= (o:SOL {PRB : {PRB2}} RETURN n, p, o, q;",

 "parameters": {"PRB1": "Title of problem1", "PRB2": "Title of problem2"}
    }   ],   

"resultDataContents": ["graph"] }

我将获得:

  

{“results”:[],“errors”:[{“code”:“Neo.ClientError.Statement.SyntaxError”,“message”:“输入'R'无效:预期的空格,评论,')'或关系模式(第1行,第90列(偏移:89))\ r \ n \“MATCH p =(m) - [*] - >(n:SOL {PRB:{PRB1}})WHERE节点( p)MATCH q =(o:SOL {PRB:{PRB2}} RETURN n,p,o,q; \“\ r \ n ^”}}}}

但如果我把它分成几行,那么:

 :POST /db/data/transaction/commit {

 "statements": [
    {
      "statement": "MATCH p = (m)-[*]->(n:SOL {PRB : {PRB1}})
 WHERE nodes (p) 
 MATCH q= (o:SOL {PRB : {PRB2}} 
 RETURN n, p, o, q;",

"parameters": {"PRB1": "Title of problem1", "PRB2": "Title of problem2"}
    }
  ],

  "resultDataContents": ["graph"]
}

据说:

  

{ “结果”:[], “错误”:[{ “代码”: “Neo.ClientError.Request.InvalidFormat”, “消息”:“无法   反序列化请求:非法引用的字符((CTRL-CHAR,代码   10)):必须使用反斜杠进行转义才能包含在字符串中   值\ n在[来源:HttpInputOverHTTP @ 41fa906c; line:4,专栏:   79]“}]}

拜托,我需要你的帮助!

亚历

1 个答案:

答案 0 :(得分:1)

使用Transaction Cypher HTTP API,您可以将相同的Cypher语句传递给API。

引用this section of the doc,这是最简单的方法示例:

  

在一个请求中开始并提交事务如果没有必要   保持一个事务跨多个HTTP请求打开,你可以开始一个   只使用一个HTTP进行事务,执行语句和提交   请求。

     

示例请求

     
      
  • POST http://localhost:7474/db/data/transaction/commit
  •   
  • 接受:application/json; charset=UTF-8
  •   
  • 内容类型:application/json

    {
      "statements" : [ {
        "statement" : "CREATE (n) RETURN id(n)"
      } ]
    }
    
  •   
     

回复示例

     
      
  • 200:好的
  •   
  • 内容类型:application/json

    {
      "results" : [ {
        "columns" : [ "id(n)" ],
        "data" : [ {
          "row" : [ 6 ],
          "meta" : [ null ]
        } ]
      } ],
      "errors" : [ ]
    }
    
  •