我犯了与属性类型不一致的错误。对于“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的新手,但这看起来应该非常简单。我已经删除了这些节点的所有关系。我在这里缺少什么?
答案 0 :(得分:1)
答案 1 :(得分:0)
事实证明,这是@JeremyKendall建议的一个错误。它只是因为我对person.external_id
有一个唯一性约束。我找到了一个简单的解决方法,方法是将external_id
属性的值复制到每个person
节点上的临时属性中(没有唯一性约束),然后删除该临时属性为字符串的所有节点。 / p>