如何删除具有重复属性的 Neo4j 节点?

how to remove Neo4j nodes with duplicate properties?

在 Neo4j 2.1.6 中,我有关于某个 属性、inputID.

的非唯一节点

如何使用 Cypher 删除所有根据给定 属性 重复的节点,只留下唯一节点?

我尝试了以下...

MATCH (n:Input)
WITH n.inputID, collect(n) AS nodes
WHERE size(nodes) > 1
FOREACH (n in tail(nodes) | DELETE n)

...但结果...

Expression in WITH must be aliased (use AS) (line 2, column 6)
"WITH n.inputID, collect(n) AS nodes"
      ^

谢谢,

G

您没有为 WITH 变量设置别名。改变这个:

WITH n.inputID, collect(n) AS nodes

为此:

WITH n.inputID AS inputID, collect(n) AS nodes

正如您正确发现的那样,在集合上使用 tail 可以让您删除重复项,不要忘记删除节点之前的关系 (DETACH) 并将该字段命名为 FrobberOfBits 提到的:

MATCH (n:Input)
WITH n.inputID AS inputID, collect(n) AS nodes
WHERE size(nodes) > 1
FOREACH (n in tail(nodes) | DETACH DELETE n)