图数据库 之 Neo4j - Cypher语法基础(5)

节点(Nodes)

Cypher使用()来表示一个节点。

() # 最简单的节点形式,表示一个任意无特征的节点,其实就是一个空节点

(movie) # 如果想指向一个节点在其他地方,我们可以给节点添加一个变量名(如movie),表示一个变量名为 movie的节点。

(:Movie) # 表示一个标签为 Movie 的匿名节点

(movie:Movie) # 表示一个变量名为 movie,标签为 Movie 的节点

(movie:Movie {title: "hello"}) # 花括号里定义节点的属性,属性都是键值对

(movie:Movie {title: "hello", released: 1999}) # 多个属性

(movie:Movie:User) # 多个标签,表示一个变量名为 movie,标签为 Movie 和 User 的节点

(movie:Movie), (user:User)  // 表示一个变量名为 movie,标签为 Movie 的节点和一个变量名为 user,标签为 User 的节点

属性可以用来存储信息或者来条件匹配(查找)

创建节点

创建如下节点

CREATE (movie:Movie {title:"功夫熊猫",act:"杰克",release_time:"2024-01-01"});
CREATE (movie:Movie {title:"战狼2",act:"吴京",release_time:"2024-01-01"});
CREATE (user:User {name:"吴京",sex:"男"});
CREATE (user:User {name:"杰克",sex:"男"});

创建完成后,可以看到 Node labels 一共有4个节点,节点类型有 Movie、User。

查看节点

可以分别点击节点进行查看,对应的语法也会显示出来

根据条件查找节点

MATCH (movie:Movie {title:"战狼2"})

RETURN movie

删除节点

MATCH (movie:Movie {title:"战狼2"}) DELETE movie;

更新节点属性

CREATE (movie:Movie {title:"战狼2",act:"吴京",release_time:"2024-01-01"});

返回指定属性

MATCH (movie:Movie)

WHERE movie.title = "战狼2"

SET movie.release_time = "2024-01-10"

RETURN movie.title AS title;

返回全部属性

MATCH (movie:Movie)

WHERE movie.title = "战狼2"

SET movie.release_time = "2024-01-10"

RETURN movie;

节点增加属性

MATCH (n { title: '战狼2' })SET n.comment = '强烈推荐' RETURN n;

节点删除属性

如果设置属性的值是NULL,相当于把该属性从节点或关系中移除

MATCH (n { title: '战狼2' })SET n.comment = null RETURN n;

标签(Labels)

标签用于对节点进行分类,可以将节点进行分组,如吴京和杰克都是演员。一个节点可以没有标签,也可以有多个标签,如吴京可以是演员,也可以是导演、出品人。可以根据标签类型对特定节点进行查询。

创建标签

MATCH (u {name:"吴京"}) set u:演员 return u
MATCH (u {name:"吴京"}) set u:导演 return u
MATCH (u {name:"杰克"}) set u:演员 return u

查找标签

match (n:演员) return n;

match (n:导演:演员) return n;

删除标签

MATCH (u:User {name: '吴京'}) REMOVE u:演员

修改标签

MATCH (n:User {name: '吴京'}) SET n:出品人 REMOVE n:导演

关系(Relationships)

两个节点之间会有关系,添加前后相关信息在数据中。

两个节点之间存在关系,则使用双横杠 -- 和箭头 >, < 的组合来表示。

(a)-->(b) # 表示节点 a 到节点 b 的关系

(a)<--(b) # 表示节点 b 到节点 a 的关系

(a)--(b) # 允许不使用箭头,表示节点 a,b 之间存在关系,不考虑方向性

(a)-->(c)<--(b) # 表示节点 a,b 到节点 c 的关系

同时,Cypher 使用方括号 [] 和冒号 : 为关系赋予变量名与设置标签,使用管道符 | 隔开多个关系标签。

(a)-[r:REL_TYPE]->(b) # 表示一个节点 a 到节点 b 的关系 r,标签为 WRITE

(a)-[r:REL_TYPE1|REL_TYPE2]->(b) # 表示一个节点 a 到节点 b 的关系 r,标签为 WRITE 或者 PARTICIPATE
创建关系

MATCH (u:User {name: '吴京'}), (m:Movie {title: '战狼2'}) CREATE (u)-[:出品]->(m)

MATCH (u:User),(m:Movie)

WHERE u.name = '杰克' AND m.title = "功夫熊猫"

CREATE (u)-[:配音]->(m), (u)-[:演出]->(m)

RETURN u,m

删除关系

match (u:User {name: '杰克'}) - [r:配音] -> (m:Movie {title: '功夫熊猫'}) delete r return u,m

r 表示 关系 的变量

修改关系

MATCH (u:User {name:'杰克'})-[r1:演出]->(m:Movie {title:'功夫熊猫'})

create (u)-[r2:出演]->(m)

set r1 = r2

delete r1

return u,m

r1、r2 表示关系的变量

查询关系

MATCH (u:User {name:'杰克'})-[r1:出演]->(m:Movie {title:'功夫熊猫'}) return u,r1,m

模式(Patterns)

模式是用于定义节点和关系的结构和约束的规则集合。它描述了节点和关系的类型、属性以及它们之间的连接方式。

MATCH (u:User {name:'杰克'})-[r1:出演]->(m:Movie {title:'功夫熊猫'}) return u,r1,m
图展示
表格展示
文本展示
代码展示
路径的表示

Cypher 中 节点-关系-节点 是最基础的路径,可以用()--()表示, 对于较长的路径,Cypher 中使用星号 *,数字和点号 . 来进行表示。

(a)-[*2]->(b) # 表示节点 a,节点 b 之间的路径长度为 2,等价于 (a)-->()-->(b)

(a)-[*3..5]->(b) # 表示节点 a,节点 b 之间的最小路径长度为 3,最大为 5

(a)-[*3..]->(b) # 表示节点 a,节点 b 之间的路径长度至少为 3

(a)-[*..5]->(b) # 表示节点 a,节点 b 之间的路径长度至多为 5

(a)-[*]->(b) # 表示节点 a,节点 b 之间的路径长度为任意
相关推荐
Moshow郑锴14 小时前
Neo4j Graph Data Science Certification exam! 题库1
neo4j·knowledge graph·考试认证·data science
新手小袁_J18 小时前
实现Python将csv数据导入到Neo4j
数据库·python·neo4j·《我是刑警》·python连接neo4j·python导入csv·csv数据集导入neo4j
ZHOUPUYU18 小时前
最新 neo4j 5.26版本下载安装配置步骤【附安装包】
java·后端·jdk·nosql·数据库开发·neo4j·图形数据库
シ風箏18 小时前
Neo4j【环境部署 02】图形数据库Neo4j在Linux系统ARM架构下的安装使用
linux·数据库·arm·neo4j
清风ꦿ18 小时前
neo4j 图表数据导入到 TuGraph
python·neo4j·knowledge graph
Nice night2 天前
Neo4j插入数据逐级提升速度4倍又4倍
neo4j
abments7 天前
neo4j删除所有数据
数据库·neo4j
入戏三分_s7 天前
Neo4j常用命令
java·前端·neo4j
m0_748244837 天前
Neo4j+Neovis+Vue3:前端连接数据库渲染
前端·数据库·neo4j
roman_日积跬步-终至千里7 天前
【Neo4J】neo4j docker容器下的备份与恢复
docker·容器·neo4j