Neo4j / Cypher删除“未知标识符”

时间:2016-01-11 23:18:56

标签: neo4j cypher

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

MATCH (n:person)
WHERE TOSTRING(n.external_id) = n.external_id
RETURN count(n)

但是,当我尝试使用以下查询删除这些节点时,我会收到“未知标识符`n`。”:

MATCH (n:person)
WHERE TOSTRING(n.external_id) = n.external_id
DELETE n

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

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

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