Neo4j/Cypher删除"未知标识符"

Ros*_*s G 5 neo4j cypher

我犯了与属性类型不一致的错误.对于"person"类型的节点,一些节点具有"external_id"属性的字符串,而一些节点具有int.我想删除属性为字符串的所有节点.以下查询运行,似乎给出了正确的答案.

MATCH (n:person)
WHERE TOSTRING(n.external_id) = n.external_id
RETURN count(n)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用以下查询删除这些节点时,我得到"未知标识符`n`.":

MATCH (n:person)
WHERE TOSTRING(n.external_id) = n.external_id
DELETE n
Run Code Online (Sandbox Code Playgroud)

我是Neo4j和Cypher的新手,但这看起来应该非常简单.我已经删除了这些节点的所有关系.我在这里错过了什么?

Ros*_*s G 0

事实证明,这是一个错误,正如@JeremyKendall 所建议的那样。它的出现只是因为我对person.external_id. 我找到了一个简单的解决方法,将属性的值复制external_id到每个person节点上的临时属性中(没有唯一性约束),然后删除该临时属性是字符串的所有节点。