使用APOC Neo4J 3.x从索引中删除关系

时间:2018-02-20 20:58:59

标签: neo4j cypher neo4j-apoc

当我删除Neo4J 3.x中的关系时,我希望它也可以从使用APOC创建的自动索引中删除。

但是,我没有看到任何删除APOC关系的程序。我只看到removeRelationshipByName但是我必须指定关系的名称以及如果我按类型获得关系怎么办?如果没有删除关系,当我尝试按关系属性使用此索引进行搜索时,会出现错误。它在索引中找到了一个关系,但它并不存在。

为了更好地了解,我使用

创建了现有关系的索引

MATCH ()-[r]->() CALL apoc.index.addRelationship(r,['user','context','statement','gapscan']) RETURN count(*);

这会为多种关系类型创建多个索引。

我还设置了一个触发器,以便每次添加关系时(无论什么类型)都会将其添加到相应类型的索引中

CALL apoc.trigger.add('RELATIONSHIP_INDEX',"UNWIND {createdRelationships} AS r MATCH ()-[r]->() CALL apoc.index.addRelationship(r,['user','context','statement','gapscan']) RETURN count(*)", {phase:'after'})

现在,我想要做的是设置一个触发器,在删除它们时将从索引中删除关系。但是没有程序removeRelationship - 只有removeRelationshipByName - 但是,我并不了解如何在这种情况下使用它。我应该提供什么名字?

1 个答案:

答案 0 :(得分:1)

来自apoc.index.addRelationship()的文档/示例:

  

该语句将创建与relationship-type同名的关系索引。

这是关系索引的名称,以及要提供给removeRelationshipByName()的名称。

这个特定程序的命名相当混乱...... ByName部分指的是关系索引,而不是关系本身。