无法根据条件删除Neo4j节点
我向数据库添加了一些节点。所有节点的格式如下所示:无法根据条件删除Neo4j节点,neo4j,cypher,Neo4j,Cypher,我向数据库添加了一些节点。所有节点的格式如下所示: {"id":"10","guid":"...", "type":"object_1_"} {"id":"11","guid":"...", "type":"object_1_"} ... {"id":"11","guid":"...", "type":"object_N_"} 当我运行一个START n=node(*)RETURN n查询时,这个^^^就是我得到的 但是,当我尝试根据某个条件删除某些节点时,它将不起作用。那么这个 MATCH
{"id":"10","guid":"...", "type":"object_1_"}
{"id":"11","guid":"...", "type":"object_1_"}
...
{"id":"11","guid":"...", "type":"object_N_"}
当我运行一个START n=node(*)RETURN n
查询时,这个^^^
就是我得到的
但是,当我尝试根据某个条件删除某些节点时,它将不起作用。那么这个
MATCH (n{type:"object_1_"}) OPTIONAL MATCH (n)-[r]-() DELETE n,r
不起作用。我想知道为什么。只有一个微不足道的案例起作用:
MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n, r
但这不是我想要的。我想有一些条件,比如上面的条件,
type
属性是object\u1
。那么,我如何才能做到这一点呢?整个问题在于我如何在curl中运行这个查询。不正确的方式是:
curl http://... -H ... -d "{\"query\":\"MATCH (n{type:\"object_1_\"})
OPTIONAL MATCH (n)-[r]-() DELETE n,r\"}"
Neo4j
解析器没有抛出任何错误消息,但仍然不正确。正确的做法是:
curl http://... -H ... -d "{\"query\":\"MATCH (n{type:'object_1_'})
OPTIONAL MATCH (n)-[r]-() DELETE n,r\"}"
匹配(n{type:“object_1_”})返回n
给你什么?我发现了什么问题。我通过命令行中的curl
发出了这个命令,就像“{\'query\”:\'MATCH(n{type:\'object\'u1\'})}
一样,即使curl
和neo4j
解析器都没有抛出任何错误消息,事实上查询是不正确的。所以,我必须做“\MATCH(n{type:'object\u1})
。因此,初学者请注意如何转义引号。以及如何运行查询?这不是neo4j shell或浏览器中的结果。您使用的是rest API吗?好的,您可以将其放在n答案中,供下一个人使用。此外,如果您将json字符串用单引号括起来,则可以在其中使用双引号不必逃避太多。@jjaderberg。感谢您的帮助!我希望neo4j解析器更聪明。这实际上很有趣。问题不在于密码解析器。将-v
标记添加到curl以查看HTTP500
错误。然后查看数据/log/console.log
中的堆栈跟踪。这是Web服务器的js在解析器(Jetty,Jackson)上,这让人窒息。