Neo4j数据库——Cypher语言初学

时间:2021-04-01 18:05:54

任何数据库基础的都是增删改查四种功能,而Neo4j使用的Cypher语言一样如此。Cypher是一种很好处理图数据库的语言,下面就从几个基本功能来学习他的基本用法。就以我们做的电影智能问答系统来做示范。

一 创建节点

创建节点有两种方式,一种是create方式,一种是用merge方式。其中用create创建是不管这个节点有没有都进行创建,而merge是如果节点存在则不再创建。

1 //merge方式,创建唯一节点
2 merge(n:教父) 
3 
4 //create方式,无论有没有都进行创建节点
5 create(n:教父)

(被create创建了两次的节点,他们的id值是被Neo4j自动分配而且递增的)此时创建的节点除了id属性没有其他的属性。

Neo4j数据库——Cypher语言初学

 

二 增删改节点属性

(1)查找到相应节点并返回

1 //注意不要忘记返回节点
2 match(n) where ID(n) = 3272 return n

(2)给相应节点添加属性

1 //给该Node添加三个属性,分别是label(节点标签名),releasedate(上映日期),introduction(电影介绍)
2 match(n) where ID(n) = 3272 set n.label='教父',n.releasedate='1991-03-21',n.introduction='教父很好看' return n

neo4j查询节点用:match 相当于关系型数据库的select,相当于非关系数据库mongodb的find

neo4j修改节点属性用:set 相当于关系型数据库的update...set...

(在Neo4j中如果设置不存在的属性会自动新建该属性)

(3)删除节点的属性

1 //删除电影的上映日期属性
2 match(n) where ID(n) = 3272 remove n.releasedate return n

(4)创建带属性的节点

1 create(n:Movie{label:'教父',n.releasedate='1991-03-21',n.introduction='教父很好看'}) return n

 

三 模糊查询

查询属性值label开头是“教”其余任意值的节点信息

match(n) where n.label=~'教*.' return n

 

四 删除相应节点

删除节点中对应标签的节点

match(n:Movie) where ID(n) = 3257 delete n

 

五 关系

1.创建关系

关系不能独自存在,必须有两个或两个以上的节点才可以。而创建统一用create命令,而关系的创建,实际上和创建节点差不多,唯一区别就是,关系是有方向的,而且关系用‘[]’表示,而节点用'()'表示。如:

match(n),(b) where n.label='李连杰' and b.label='少林寺'create(n)-[r:actedin{since:1991,champion:3}]->(b) return n,r,b

(1)、首先匹配找到节点n和b,也就是李连杰和少林寺代表的节点Node

(2)、然后创建节点n到节点b的关系r,r有两个属性,一个是时间since,另一个是拿过的奖项数量champion

(3)、最后返回n,r,b 完整节点之间的关系结果,table数据有三列。

2. 修改关系属性

match(n)-[r]-(b) where ID(r) = 12513 set r.since='1990-09-09'return n,r,b

3. 删除关系

match(n)-[r]-(b) where n.label='李连杰' and b.label='少林寺'
delete r
return r

 

以上就是Cypher语言的基本用法。

 

本文部分引用“https://blog.csdn.net/appleyk/article/details/80402519”