【问题标题】:Neo4j Rest Transactional HTTP Endpoint Cypher: Create multiple unique Relations within one requestNeo4j Rest Transactional HTTP Endpoint Cypher:在一个请求中创建多个唯一关系
【发布时间】:2015-04-08 15:24:22
【问题描述】:

如何在一个请求中创建多个关系? 以下示例请求导致以下错误: Neo.ClientError.Statement.InvalidSyntax","message":"WITH is required between CREATE UNIQUE 和 MATCH(第 1 行,第 281 列) 端点: 事务密码 HTTP 端点 http://localhost:7474/db/data/transaction/commit

请求:

{"statements":[{"statement":" 
  MATCH (nA0:Test{name:'Test B'}), (nB0:Test{name:'Test A'}) 
  CREATE UNIQUE (nA0)-[r:has_parent]->(nB0) 
  MATCH(nA1:Test{name:'Test C'}), (nB1:Test{name:'Test A'})  
  CREATE UNIQUE (nA1)-[r:has_parent]->(nB1)"}]}

如果我只提交一个 MATCH ... CREATE UNIQUE 语句,它是否有效,是否需要特定的分隔符?

非常感谢!

编辑: 将语句分组到一个 MATCH 和 CREATE UNIQUE 是可行的,但是将语句分开会更适合我的目的。

{"statements":[{"statement":" MATCH(nSrc0:Test{name:'Test B'}),(nTrgt0:Test{name:'Test A'}),(nSrc1:Test{name:'Test C'}),(nTrgt1:Test{name:'Test A'})  CREATE UNIQUE (nSrc0)-[r0:has_parent]->(nTrgt0), (nSrc1)-[r1:has_parent]->(nTrgt1)"}]}

【问题讨论】:

    标签: rest neo4j relationship


    【解决方案1】:

    正如错误所说,您必须在 CREATE UNIQUE 和下一个 MATCH 之间添加 WITH 以将写入与读取子句分开。

    1. 将这两个语句放在请求中的两个单独条目中
    2. 使用参数
    3. 使用 MERGE 而不是 CREATE UNIQUE

    见:

    {"statements":[
    
    {"statement":
     "MATCH (a:Test{name:{name_a}}), (b:Test{name:{name_b}}) MERGE (a)-[:has_parent]->(b)",
     "parameters":{"name_a":"Test B","name_b":"Test A"}},
    
    {"statement":
     "MATCH (a:Test{name:{name_a}}), (b:Test{name:{name_b}}) MERGE (a)-[:has_parent]->(b)",
     "parameters":{"name_a":"Test C","name_b":"Test A"}},
    ...
    ]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      相关资源
      最近更新 更多