neo4j rest api删除示例

时间:2014-09-15 14:25:41

标签: neo4j

目前我正在使用Transactional HTTP端点删除所有节点和关系。我可以使用浏览器来做到这一点。但是,当我这样做时,声明没有得到承诺。以下是我试图实现它的方式。

URI: http://xyz:7479/db/data/transaction

方法:POST Content-Type:application / json

{   "statements" : [ {     "statement" : "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r"     } ] }

回复:{"commit":"http://xyz:7479/db/data/transaction/172/commit","results":[{"columns":[],"data":[]}],"transaction":{"expires":"Mon, 15 Sep 2014 14:15:31 +0000"},"errors":[]}

能告诉我我是否正确行事吗?以及为什么节点没有被删除?或者还有其他替代方式。

提前致谢。

2 个答案:

答案 0 :(得分:1)

从您看来,您尝试使用事务端点删除节点。这没关系,但您必须提交事务才能使更改生效。提交URL将通过响应发送回给您(在您的示例中为http://xyz:7479/db/data/transaction/172/commit)。每笔交易都有所不同,因此您必须发送一封请求,该请求的网址与发送给您的网址完全相同。

只需将/commit添加到原始网址,即可避免发送第二个提交交易的请求:

http://xyz:7479/db/data/transaction/commit

这将导致事务在单个请求中启动和提交。你可以阅读它in the manual


编辑:如其他人所述,下面描述的终点是弃用的:

话虽如此,该事务通常仅针对复杂的用例(当一个依赖于另一个时至少有两个查询)。在您的示例中,似乎不需要事务。您可以使用here所述的普通旧/db/data/cypher端点。

您的请求正文可能如下所示:

{
  "query" : "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r",
  "params" : {}
}

请记住添加AcceptContent-Type标题。

答案 1 :(得分:1)

正如@Maciej所提到的,uri应该以/ commit结束。

BTW身体不对,这个是针对已弃用的cypher端点。

它应该包含类似的内容:

{   "陈述":[{"陈述":" MATCH(n)可选匹配(n) - [r] - ()DELETE r,n" }] }

请参阅文档:

http://docs.neo4j.org/chunked/stable/rest-api-transactional.html#rest-api-begin-and-commit-a-transaction-in-one-request