我正在做一个将MySQL表转换为Neo4j图的项目。转换后,我在图中使用java复制SQL数据库的删除操作。所以当我删除SQL数据库中的记录时,我想删除与该特定记录相关的节点。例如,我从表Complaint中删除complaint_id= 7的Complaint_Details是Complaints with ON_CASCADE Action的子表。它还有另一个子表ON_CASCADE SET NULL。因此,在图中,我想删除complaint_id = 7的Complaint节点,Complaint_id =7的Complaint_Details节点,并删除其子节点的相应属性。
我目前的方法是使用String cypherPath =“MATCH path=”从节点complaint(complaint_id为7)查询路径(n:“+ tableName +“{”+ columnName +“:“+ PkValue +“})-[*]->(m)WHERE NOT EXISTS((m)-[]->())RETURN path”;然后我遍历每个节点,并检查数据库中的删除操作。根据该操作,我要么删除节点,要么删除属性。此方法占用大量时间。(2000条记录大约为5秒)是否有更有效的方法来做到这一点?
1条答案
按热度按时间gopyfrb31#
根据您的评论,我假设您的数据模型看起来像这样(节点可以有比显示的更多的属性):
字符串
其中
Foo
只是Complaint_Details
节点的子节点的任意数量的标签之一。在这种情况下,当删除一个
Complaints
节点时,你也可以删除它的Complaint_Details
节点,并删除其子节点的detail_id
属性:型
该查询假设所需的
complaint_id
值作为$complaint_id
parameter传递。