2016-12-01 78 views
0

我想从包含该属性的所有节点中删除属性。我正在使用的代码是:Neo4j预计节点,关系或路径,但得到一个字符串

call apoc.periodic.commit(" 
match (p:Person) 
with p limit {limit} 
delete p.county 
return count(*) 
",{limit:10000}) 

但我得到以下错误:Expected a Node, Relationship or Path, but got a String

有谁知道是什么原因导致这个错误以及如何解决它?

+0

你使用的是哪个版本?这个查询在3.0.6上与空数据库上的APOC 3.0.4.2完美协同工作。 (顺便说一下'p.county'可能会或可能不会是一个错字。) –

+0

Neo4j是3.0.6,APOC是3.0.4.2。 这不是一个错字,也尝试删除另一个属性,但我得到了相同的错误 – Porjaz

+0

我明白了。我确实可以通过使用单个节点来重现你的错误:CREATE(p:Person {name:'p1',county:'c1'})' –

回答

1

按照Cypher documentation

The DELETE clause is used to delete graph elements — nodes, relationships or paths.

删除的属性,使用REMOVE条款:

The REMOVE clause is used to remove properties and labels from graph elements.

这给下面的查询:

CALL apoc.periodic.commit(" 
    MATCH (p:Person) 
    WITH p LIMIT {limit} 
    REMOVE p.county 
", {limit:10000}) 

奇怪的是,使用RETURN为m引入某种无限循环e,并且查询不会终止,所以我删除了RETURN子句。

相关问题