首页 文章

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

提问于
浏览
12

在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

2 回答

  • 15

    你没有别名 WITH 变量 . 改变这个:

    WITH n.inputID, collect(n) AS nodes
    

    对此:

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

    正如您所知,在集合上使用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)
    

相关问题