我正在使用Neo4j 2.0.1社区。我尝试通过REST端点发送查询来在图中插入关系。
我的关系查询非常简单:
MATCH (t1:Test { name : 'TEST_1' }), (t2:Test { name : 'TEST_2' }) CREATE (t1)-[:REL_TEST]->(t2)
我在Powershell中这样称呼它:
$postParams = "{ `"query`" : `"MATCH (t1:Test { name : {test1} }), (t2:Test { name : {test2} }) CREATE (t1)-[:REL_TEST]->(t2)`",`"params`" : { `"test1`" : `"TEST_1`", `"test2`" : `"TEST_2`" } }"
Invoke-WebRequest -Uri http://localhost:7474/db/data/cypher -Method POST -Body $postParams -Headers @{"Accept"="application/json; charset=UTF-8";"Content-Type"="application/json"}
我收到了以下回复:
StatusCode : 200
StatusDescription : OK
Content : {
"columns" : [ ],
"data" : [ ]
}
RawContent : HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 40
Content-Type: application/json; charset=UTF-8
Server: Jetty(9.0.z-SNAPSHOT)
{
"columns" : [ ],
"data" : [ ]
}
Forms : {}
Headers : {[Access-Control-Allow-Origin, *], [Content-Length, 40], [Content-Type, application/json; charset=UTF-8], [Server, Jetty(9.0.z-SNAPSHOT)]}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 40
但是没有创造关系。如果我然后在浏览器UI中键入相同的查询,它的工作原理。 我不知道自己做错了什么,特别是因为查询在浏览器中有效,而REST调用过程适用于插入节点。
答案 0 :(得分:3)
您确定您的查询无效吗?您没有返回任何数据,因此可能在您不知情的情况下创建数据。
你可以试试这样的事情
MATCH (t1:Test{name: {test1}}), (t2:Test{name: {test2}})
CREATE (t1)-[rel:REL_TEST]->(t2)
RETURN rel
如果您的回复中没有rel
,则意味着可能因为至少有一个MATCH
失败而无法创建rel。尝试返回t1
和t2
,看看它们是否按预期工作。