我试图删除 20000 个具有日期戳属性 = 20130808 的节点,但是当我用“RETURN COUNT(nx)”替换“DELETE nx”时,结果是 7880 而不是 20000,此时我在 Neo4j 1.9.2 中有 1000000 个节点。我怎样才能正确地做到这一点?
密码查询:
START nx=node(*)
WITH nx
LIMIT 20000
WHERE HAS (nx.datestamp) AND nx.datestamp = 20130808 AND ID(nx) <> 0
DELETE nx
最佳答案
那是因为您首先选择 20k 个任意节点,然后应用 WHERE
过滤器。你必须反过来做:
START nx=node(*)
WHERE HAS (nx.datestamp) AND nx.datestamp = 20130808 AND ID(nx) <> 0
WITH nx
LIMIT 20000
DELETE nx
请注意,这种具有属性访问权限的全局操作是昂贵的。更好的方法是为日期戳启用自动索引,然后执行以下操作:
START n=node:node_auto_index(datestamp=20130808)
WITH n
LIMIT 20000
DELETE n
关于neo4j - Cypher 查询限制结果和删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18120452/