Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 使用RESTAPI上的cypher查询删除节点和关系_Neo4j_Cypher - Fatal编程技术网

Neo4j 使用RESTAPI上的cypher查询删除节点和关系

Neo4j 使用RESTAPI上的cypher查询删除节点和关系,neo4j,cypher,Neo4j,Cypher,我正在使用2.0 m6neo4j服务器(win7 64上的oraclejdk7) 我正在尝试通过RESTAPI使用单个密码查询删除节点及其关系 我创建的查询(如果我在浏览器UI中运行该查询,则该查询有效)如下所示: START n = node( 1916 ) MATCH n-[r]-() DELETE n, r 当我把它通过gson时,结果是: {"query":"START n \u003d node( 1916 ) MATCH n-[r]-() DELETE n, r"} 将其发送到服

我正在使用2.0 m6neo4j服务器(win7 64上的oraclejdk7)

我正在尝试通过RESTAPI使用单个密码查询删除节点及其关系

我创建的查询(如果我在浏览器UI中运行该查询,则该查询有效)如下所示:

START n = node( 1916 ) MATCH n-[r]-() DELETE n, r
当我把它通过gson时,结果是:

{"query":"START n \u003d node( 1916 ) MATCH n-[r]-() DELETE n, r"}
将其发送到服务器时会得到响应:

{
  "columns" : [ ],
  "data" : [ ]
}
我的测试失败,因为仍然可以通过其id在neo4j服务器中找到节点

如果我将查询简化为仅删除一个节点(没有关系),则其:

变成

{"query":"START n \u003d node( 1920 )  DELETE n"}
然后删除节点

我错过什么了吗

谢谢,Andy

匹配n-[r]-()
将仅在至少有一个关系连接到节点时匹配该节点

您想使:
匹配n-[r?]-()

此外,还需要删除节点之前的关系

因此,您的完整查询是:

START n=node(1916)
MATCH n-[r?]-()
DELETE r, n

对于neo4j 2.0,您可以

START n=node(1916)
OPTIONAL MATCH n-[r]-()
DELETE r, n;

START
[r?]
语法正在逐步淘汰。通常也不建议直接使用内部ID。尝试以下方法:


匹配(n{some_字段:“some_val”})
可选匹配(n)-[r]-()
删除n,r

(请参阅)

Neo4J 2.0.3不支持问号(?),因此答案是使用
可选匹配

START n=节点(nodeid)
可选匹配n-[r]-()

删除r,n

而且语法也有了相当大的变化。Neo4j 2.3介绍了以下内容:

MATCH (n {id: 1916})
DETACH DELETE n

“分离”会自动删除所有输入和输出关系

基于最新的文档,我也对其进行了测试

START n=node(1578)
MATCH (n)-[r]-()
DELETE n,r
我们必须把()放在n附近,也不需要?在[r?]中


即使它没有
可选功能

也能正常工作,这非常有意义,并且已经做了您建议的更改,它也能正常工作:)谢谢。这是Neo4j 1.x版本中的valide。Neo4j 2引入了一种新语法:
可选匹配n-[r]-()
。参考Leland Cope answer。要删除所有节点(包括断开连接的节点)及其关系,您需要匹配(n)可选匹配(n)-[r]()删除n,r(很好,它也可以在一行中工作)
START n=node(1578)
MATCH (n)-[r]-()
DELETE n,r