从索引中删除与 APOC Neo4J 的关系 3.x
Remove a relationship from index with APOC Neo4J 3.x
当我在 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
— 但是,我不明白如何在这种情况下使用它。我应该提供什么名字?
来自 apoc.index.addRelationship()
的文档/示例:
The statement will create the relationship index with the same name as relationship-type.
这是关系索引的名称,也是要提供给 removeRelationshipByName()
的名称。
这个特定过程的命名相当混乱...ByName
部分指的是关系索引,而不是关系本身。
当我在 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
— 但是,我不明白如何在这种情况下使用它。我应该提供什么名字?
来自 apoc.index.addRelationship()
的文档/示例:
The statement will create the relationship index with the same name as relationship-type.
这是关系索引的名称,也是要提供给 removeRelationshipByName()
的名称。
这个特定过程的命名相当混乱...ByName
部分指的是关系索引,而不是关系本身。