如何删除具有重复属性的 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)
在 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)