上一篇文章《Neo4j入门系列(二)Neo4j部署安装》我们以及完成了对neo4j的单机版本安装。既然本着所见即所得的形式,我们本文来演示下如何使用neo4j,看一下把neo4j用起来的效果如何。
备注:
本文的话,大家不需要做过多知识点的了解,主要是看效果,了解neo4j用起来是怎么样的。在后面的文章中我们会挨个介绍neo4j相关的知识点。下面直接开始。
1、打开neo4j的操作界面
这里我们首先进入到neo4j的webui,访问信息是ip+7474端口,如下图:
进来之后会要求去填写连接neo4j的信息,这里我们直接填写neo4j的docker实例的信息即可。
2、连接neo4j
这里主要是填写地址、账号、密码即可,地址信息默认不需要我们填写,只填写账号密码即可,我们的账号密码位置docker-compose.yml文件中,如下图:
填写到页面上,点击connect即可:
连接成功之后我们就可以看到如下的信息:
在最上面的命令行里面我们就可以敲相关的neo4j的语法命令了。
3、添加一个节点
这里我们测试添加一个名称为公司的节点,对应的字典信息如下:
Company: name:a公司 opYear: 2
我们在命令行输入的命令是:
create (n:Conpany {name:'a公司',opYear:'2'}) return n
执行完后就可以看到我们这个公司的节点创建好了,如下图:
接着我们再创建2个部门的节点,部门节点的字典如下:
Department: name:技术部 nos:001 Department: name:行政部 nos:002
在neo4j中执行的语法是:
create (n:Department{name:'技术部',nos:'001'}),(m:Department{name:'行政部',nos:'002'}) return n,m
执行完毕之后,我们可以看到创建了2个部门,分别是行政部和技术部,如下图:
4、创建关系
在前面我们创建的3个节点,分别是1个公司和两个部门,那么我们现在就要把这里的关系给关联起来,比如把两个部门的归属放到a公司下,这时我们在neo4j中执行的语句如下:
match(a:Conpany),(b:Department) where a.name='a公司' and b.name='技术部' create (a)-[r:归属]->(b) return r; match(a:Conpany),(b:Department) where a.name='a公司' and b.name='行政部' create (a)-[r:归属]->(b) return r;
这两条语句分别执行,完成之后如下图:
此时我们就把关系建立好了。
5、查询节点及关系
接下来我们就来查询下a公司节点及关系信息,执行的语句如下:
MATCH (n) OPTIONAL MATCH (n)-[r]-(m) RETURN *
查询之后,我们可以看到这里的关系图如下:
这是不是一个完整额关系图了。
6、删除关系
从上面5里面我们可以看到我们创建的关系错了,也就是箭头的方向指错了,应该是部门到公司的关系,这是为什么呢?这是由于我们在创建关系的时候搞错了顺序,如下图:
上面的关系应该是b指向a,所以这里我们要把错误的关系给删除掉。需要执行的删除语句是:
match(:Conpany{name:'a公司'})-[r]->(:Department{name:'技术部'}) delete r match(:Conpany{name:'a公司'})-[r]->(:Department{name:'行政部'}) delete r
执行完毕之后,我们再查询节点与关系,就可以看到这里的关系被解除了。
7、重新建立新的关系
接下来我们把正确的关系给建立起来,执行下面的语句:
match(a:Conpany),(b:Department) where a.name='a公司' and b.name='技术部' create (b)-[r:归属]->(a) return r; match(a:Conpany),(b:Department) where a.name='a公司' and b.name='行政部' create (b)-[r:归属]->(a) return r;
执行完毕之后,我们再查询整个关系就正确了,如下图:
8、删除节点
我们在第六条里面展示了如何删除关系,这里我们展示下删除节点,比如我们现在不要行政部了,那么行政部及行政部的关系都需要解除掉,就需要执行下面的语句:
//先删除关系 MATCH (m)<-[r]-(n:Department{name:"行政部"}) delete r return type(r) //再删除节点 match(a:Department) where a.name='行政部' delete a
再查询的时候就没有了,如下图:
备注:
1、这里我们删除关系的时候要注意这里的指向,比如我们是行政部指向公司,那么在删除行政部的时候,就需要删除指出对外的关系,所以行政部需要匹配需要在<-箭头的后面,如下图:
2、这里我们删除关系的时候要注意这里的指向,比如我们是其他节点指向行政部,那么在删除行政部的时候,就需要删除指出对内的关系,所以行政部需要匹配需要在<-箭头的前面。这里一定要注意关系的指向。
9、删除属性
这里删除属性的话,就是删除节点的属性,比如我们创建的两个department,一个nos是001,一个nos是002,我们可以保持行政部没有001这个属性。这在日常业务中是非常常见的。这里我们也演示一下。
//把行政部添加回来 create (m:Department{name:'行政部',nos:'002'}) return m //把行政部的关系添加回来 match(a:Conpany),(b:Department) where a.name='a公司' and b.name='行政部' create (b)-[r:归属]->(a) return r; //查找带nos=002的节点 MATCH (n:Department {nos:"002"}) return n //然后删除行政部的nos属性 MATCH (n:Department {nos:"002"}) remove n.nos return n //再测试查找带nos=002的节点 MATCH (n:Department {nos:"002"}) return n
下图我们可以看到以及查询不出来结果了:
以上就是我们关于neo4j最常见的操作。大家多测试下看下效果,后面我们挨个讲解相关的知识点。
备注:
1、在社区版里面,neo4j只有一个单一的数据库,所以有时候我们测试数据乱七八糟的,想清空数据或者从新创建一个新的数据库的话,可参考这篇文章《neo4j如何使用一个新的库做业务》来处理。
还没有评论,来说两句吧...