zoukankan      html  css  js  c++  java
  • Neo4j删除节点和关系、彻底删除节点标签名

    https://www.jianshu.com/p/59bd829de0de

    总结提前:

    【1】先删关系,再删节点

    【2】当记不得关系名时,type(r)可以查到关系名

    【3】彻底删除节点标签名,需要删除前期对该标签名建立的索引

    问题描述:

    数据库里已经创建好了节点和关系,现在想删除BC_Company、BC_Knowledge、BC_Person、Coin这4类节点,但是它们之间存在复杂的关系。

    先删节点会遇到错误。当节点与其他节点存在关系的时候,删除该节点就会报错,错误提示你应该先删除它的关系们。所以应该先删关系,再删节点。

    1删除某类节点的所有关系。

    假设我目前想删除BC_Person这类节点,但是这类节点与其他节点存在关系,并且我还不知道是什么关系,那么怎么删除BC_Person这类节点,以及它存在的所有关系?

    通过语句:MATCH (n:BC_Person)-[r]-() RETURN n,r可以查看到以下信息

    通过语句:MATCH (n:BC_Person)-[r]-() DELETE n,r   (删除节点,以及与之相关的所有关系)

    虽然上图执行语句后显示:删除了1520个节点,删除了1530个关系。

    如果再点击数据库中的BC_Person节点还有返回值,说明还有一些不存在关系的节点没有删除掉。所以还得再用语句:MATCH (n:BC_Person) DELETE n  确保BC_Person类型节点完全删除干净了。

    使用以上语句删除干净了所有节点,但是节点标签BC_Person还留存在数据标签里

    如果BC_Person该标签名,你未来不想使用了,那么可以参考How to delete labels in neo4j?该链接说没有删除标签名是因为这个标签名还创建得有索引。

    删除BC_Person节点索引后,该标签就不显示在标签列表里了

    2删除某类节点的某个关系

    假设要删除BC_Knowledge类节点的某个关系,但是你忘记具体的关系名是什么了,所以应该查看BC_Knowledge类存在哪些关系,关系名是什么。具体语句:MATCH (n:BC_Knowledge)-[r]-() RETURN r,type(r)

    然后再指定要删除的具体的关系名,假如我要删除BC_Knowledge类的companyTagIs关系。语句:MATCH (n:BC_Knowledge)-[r:companyTagIs]-() DELETE r   具有删除某一个关系。注意,如果DELETE时将n也放在其后,会出问题,因为n即BC_Knowledge还存在其他关系,在你还没有删除掉BC_Knowledge的所有关系之前,是不能正确删除节点的。



    作者:布口袋_天晴了
    链接:https://www.jianshu.com/p/59bd829de0de
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 相关阅读:
    ORACLE查询删除重复记录三种方法
    是否可以从一个static方法内部发出对非static方法的调用
    协程(微线程)
    多线程、多进程
    python3.6.5修改print的颜色
    Python之时间和日期模块
    Python之字符(2)
    Python之字符
    python之列表
    Python中的文件操作
  • 原文地址:https://www.cnblogs.com/jpfss/p/11328772.html
Copyright © 2011-2022 走看看