当我删除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
- 但是,我并不了解如何在这种情况下使用它。我应该提供什么名字?
答案 0 :(得分:1)
来自apoc.index.addRelationship()
的文档/示例:
该语句将创建与relationship-type同名的关系索引。
这是关系索引的名称,以及要提供给removeRelationshipByName()
的名称。
这个特定程序的命名相当混乱...... ByName
部分指的是关系索引,而不是关系本身。