如何在Transactional Cypher HTTP中正确使用参数

时间:2014-10-17 14:57:55

标签: neo4j

我有点卡住了。我试图在我的http请求中使用参数以减少开销,但我无法弄清楚为什么这不会起作用:

{
"statements" : [ {
"statement" : "MATCH (n:Person) WHERE n.name = {name}  SET n.dogs={dogs}   RETURN n",
"parameters" : [{

"name" : "Andres",
"dogs":5
},{

"name" : "Michael",
"dogs":3
},{

"name" : "Someone",
"dogs":2
}
]

}]
}

我尝试过使用STATEMENT打开一笔交易并提供单独的行'在I / COMMIT之前的后续交易中作为参数,但没有快乐。

我知道multiple nodes can be created与手册中的示例类似。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

我已经修改了this post的答案,这似乎可以通过使用FOREACH语句来允许多个“集合”参数。

{
  "statements" : [ 

  {
"parameters": {
    "props": [
        {
            "userid": "177032492760",
            "username": "John"
        },
        {
            "userid": "177032492760",
            "username": "Mike"
        },
        {
            "userid": "100007496328",
            "username": "Wilber"
        }
    ]
},
"statement": "FOREACH (p in {props} | MERGE (user:People {id:p.userid}) ON CREATE SET user.name = p.username) "
}
]
}

答案 1 :(得分:0)

您也可以在这种情况下使用UNWIND:

声明:

UNWIND props as prop
MERGE (user:People {id: {prop}.id}) // and the rest of your query

参数:

{"props":[ {"id": 1234, "name": "John"},{"id": 4567, "name": "Chris"}]}

这是Graphgen用于从webapp加载本地数据库中生成的图形的内容。 http://graphgen.neoxygen.io