Neo4j删除节点和关系、彻底删除节点标签名

Stella981
• 阅读 352

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

总结提前:

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

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

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

问题描述:

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

Neo4j删除节点和关系、彻底删除节点标签名

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

Neo4j删除节点和关系、彻底删除节点标签名

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

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

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

Neo4j删除节点和关系、彻底删除节点标签名

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

Neo4j删除节点和关系、彻底删除节点标签名

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

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

Neo4j删除节点和关系、彻底删除节点标签名

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

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

Neo4j删除节点和关系、彻底删除节点标签名

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

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

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

Neo4j删除节点和关系、彻底删除节点标签名

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

Neo4j删除节点和关系、彻底删除节点标签名

 



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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
sql:mysql:函数:TIMESTAMPDIFF函数实现TimeStamp字段相减,求得时间差
<divclass"htmledit\_views"id"content\_views"<p&nbsp;函数内指定是minute,则最终结果value值的单位是分钟,如果函数内指定为hours,则最终结果value值单位为小时。</p<preclass"has"name"code"<codeclass"hljssql"<
Stella981 Stella981
2年前
AndroidStudio封装SDK的那些事
<divclass"markdown\_views"<!flowchart箭头图标勿删<svgxmlns"http://www.w3.org/2000/svg"style"display:none;"<pathstrokelinecap"round"d"M5,00,2.55,5z"id"raphael
Wesley13 Wesley13
2年前
Java面试
<divclass"htmledit\_views"id"content\_views"<pid"maintoc"<strong目录</strong</p<pid"Java%E5%9F%BA%E7%A1%80%EF%BC%9Atoc"style"marginleft:40px;"<ahref"Java%E5%
Wesley13 Wesley13
2年前
Java中Class对象详解
<divclass"htmledit\_views"id"content\_views"<phttps://blog.csdn.net/mcryeasy/article/details/52344729<br</p<p待优化整理总结</p<p</p<h1style"padding:0px;fontfamily:'apple
Stella981 Stella981
2年前
LocalDateTime计算时间差
<divclass"htmledit\_views"id"content\_views"<pLocalDateTime为java8的新特性之一<br</p<p<br</p<pLocalDateTime.now()获得当前时间<br</p<p</p<h5</h5<divstyle"marginleft
Wesley13 Wesley13
2年前
Activiti 工作流入门指南
<divclass"htmledit\_views"id"content\_views"<h1<aname"t0"</a概览</h1<p如我们的介绍部分所述,Activiti目前分为两大类:</p<ul<li<p<ahref"https://activiti.gitbook.io/activiti7deve
Stella981 Stella981
2年前
Linux下CPU占用率高分析方法
<divclass"htmledit\_views"id"content\_views"<p一、可能有线程一直占用CPU资源</p<p1.先通过ps查看进程状态,找出进程的PID(8209)。</p<p2.jstackl8209&gt;/usr/local/work/tomcat/8209.stack导出PID
Stella981 Stella981
2年前
Python基础教程,Python入门教程(非常详细)
<divclass"htmledit\_views"id"content\_views"<p<ahref"http://c.biancheng.net/python/base/"rel"nofollow"第1章Python编程基础</a</p<p1.<ahref"http://c.biancheng.net/view/
Stella981 Stella981
2年前
CodeBlocks下载与安装教程
<divclass"htmledit\_views"id"content\_views"<p一、下载教程</p<p1.在浏览器上搜索CodeBlocks官网或者直接输入网址<ahref"http://www.codeblocks.org/"rel"nofollow"http://www.codeblocks.org/进入Co