3

我正在尝试删除 20000 个具有 datestamp 属性 = 20130808 的节点,但是当我将“DELETE nx”替换为“RETURN COUNT(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
4

1 回答 1

5

那是因为您首先选择 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
于 2013-08-08T07:54:47.457 回答