2014-10-09 107 views
0

我试图删除数百条记录上的重复节点,可以多次插入相同的消息。Cypher删除基于合法性的重复节点

我第一次尝试是

START n=node(*), m=node(*) 
WHERE HAS (n.msgid) AND HAS (m.msgid) AND n.msgid=m.msgid AND id(n)<id(m) 
DELETE n 

但这是极其缓慢的,任何人有更好的表演方法吗?

回答

3

您正在创建所有节点的交叉产品。

试试这个:

CREATE INDEX ON :Label(msgid); 

MATCH (n) 
WHERE n.msgid 
MATCH (m:Label {msgid:n.msgid}) 
WHERE id(n)<id(m) 
DELETE n 
+0

我试图用出场比赛,但我是用的匹配,并得到错误,会尝试你的方法! – Astronaut 2014-10-10 08:47:09