1

当我在 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——但是,我不明白如何在那种情况下使用它。我应该提供什么名字?

4

1 回答 1

1

从文档/示例中apoc.index.addRelationship()

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

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

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

于 2018-02-20T21:10:56.813 回答