带参数的Neo4j cypher会返回成功但不会创建任何内容吗?

时间:2013-12-06 04:30:20

标签: neo4j cypher

如果我寄这个:

{
  "query" :  "MATCH (p) WHERE p.id={id} CREATE (c {props}) CREATE UNIQUE p-[r:CHILD]->c",
  "params" : {  
      "id" : ["{0000-0000-0000-0000}","{0000-0000-0000-0000}","{0000-0000-0000-0004}"],
      "props" : [ {
          "id" : "{0000-0000-0000-0004}",
          "type": 48,
          "title" : "TestNode" 
       },{
          "id" : "{0000-0000-0000-0005}",
          "type": 49,
          "title" : "TestNode"
       },{
          "id" : "{0000-0000-0000-0006}",
          "type": 49,
          "title" : "TestNode"
       }]
   }
}

通过宁静的cypher api,我恢复了“成功”,但没有创造任何东西。如果我通过这个发送:

{
  "query" :  "MATCH (p) WHERE p.id={id} CREATE (c {props}) CREATE UNIQUE p-[r:CHILD]->c",
  "params" : {  
    "id" : "{0000-0000-0000-0000}",
    "props" : [ {
        "id" : "{0000-0000-0000-0001}",
        "type": 48,
        "title" : "TestNode"
    },{
        "id" : "{0000-0000-0000-0002}",
        "type": 49,
        "title" : "TestNode"
    } ]
  }
}

按预期创建两个0000-0000-0000-0000的子节点。所以关于我指定两个数组的方式不起作用。

我希望能够通过基本上指定父ID /子来创建大型树结构来创建参数。另一个选择是我使用后一种风格的密码和事务端点...但我不确定我在第一个中做错了什么。任何建议都非常感激。

1 个答案:

答案 0 :(得分:2)

您可能需要这样做:

MATCH (p) WHERE p.id IN {id}
CREATE (c {props}) 
CREATE UNIQUE (p)-[r:CHILD]->(c)

=运算符是一个精确的比较。