无法加载带ID的NODE

时间:2016-10-05 23:04:12

标签: neo4j cypher

我最近将我的Neo4j数据库升级到v.3(3.0.6)。从那时起,我在尝试使用Cypher删除节点时遇到了麻烦。这是升级后的一个新问题。他们Cypher的查询是:

MATCH (p) WHERE id(p) = 83624 
OPTIONAL MATCH (p)-[r]-(n)
OPTIONAL MATCH (p)-[r2]-(n2)  
WHERE NOT ('Entity' in labels(n2)) 
DELETE r, r2, p, n2

现在导致错误Unable to load NODE with id 83624

使用RETURN而非DELETE的确切查询将返回节点。我还尝试用DELETE节点交换DETACH DELETE,但这给了我同样的错误。

看起来之前已经问过这个问题但没有解决方案。知道是什么导致了这个错误吗?

1 个答案:

答案 0 :(得分:0)

我对此查询感到有些困惑。两个可选匹配都是相同的,因为它们将匹配与连接到p的任何节点的任何关系。

让我确保理解您尝试做的事情:按ID查找节点,然后删除该节点以及任何不是实体的连接节点(以及连接它们的关系)。是吗?

如果是这样,此查询可能会更好:

MATCH (p) WHERE id(p) = 83624 
OPTIONAL MATCH (p)--(n)
WHERE NOT n:Entity
DETACH DELETE n
DETACH DELETE p

分离节点会删除连接到该节点的所有关系,并且只能删除关系为零的节点。

另外,请注意,使用内部ID进行唯一标识节点并不是一个好主意。建议使用您自己的唯一ID,并为该标签的该属性创建唯一约束。