Neo4j Cypher语句

1. 查询操作

1.1. 根据Label查询节点

1
2
3
// 查询所有label为Movie的节点
MATCH (n: movie)
RETURN n

1.2. 根据属性查询节点

1
2
3
// 指定name
MATCH (n: Movie { name: "幻海奇情", tag: "喜剧" })
RETURN n

1.3. 查询节点的某个属性

1
MATCH (m : Movie) RETURN m.name

1.4. LIMIT查询

1
2
// 取前10条边
MATCH path=(actor:Actor)-[:ActedIn]->(movie:Movie) RETURN path limit 10

1.5. ORDER BY查询

1
2
3
4
// 升序
MATCH (movie:Movie {name:"流浪地球"})<-[r:ActedIn]-(actor:Actor)-[:ActedIn]->(otherMovie:Movie) RETURN otherMovie ORDER BY otherMovie.year LIMIT 10
// 降序
MATCH (movie:Movie {name:"流浪地球"})<-[r:ActedIn]-(actor:Actor)-[:ActedIn]->(otherMovie:Movie) RETURN otherMovie ORDER BY otherMovie.year DESC LIMIT 10

2. 添加 / 修改操作

2.1. 添加/修改节点属性

1
MATCH (t:Teacher) SET t.name='t1' return t

2.2. 给节点添加Label

1
MATCH(t:Teacher) set t:Father return t

3. 删除操作

3.1. 删除节点的属性

1
MATCH (t:Teacher) REMOVE t.name

3.2. 删除所有节点

1
2
3
4
5
6
7
// 删除所有节点
MATCH (n)
DELETE n

// 删除所有Teacher节点
MATCH (n:Teacher)
DELETE n

3.3. 删除所有节点及其关系

1
2
3
4
5
6
7
8
9
// 删除所有节点及其关系
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

// 删除所有Teacher节点及其关系
MATCH (n:Teacher)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

4. 业务查询

4.1. 查询某人演过的电影

1
2
3
4
5
6
// 查询吴京演过的所有电影
MATCH (actor:Actor {name:"吴京"})-[:ActedIn]->(movie:Movie) return movie
// 查询吴京及其演过的所有电影
MATCH (actor:Actor {name:"吴京"})-[:ActedIn]->(movie:Movie) return actor, movie
// 返回整个路径
MATCH path=(actor:Actor {name:"吴京"})-[:ActedIn]->(movie:Movie) return path

4.2. 查询参演某电影的人还演了什么电影

1
2
3
4
5
6
7
// 查询参演"流浪地球"的演员,它们还演了哪些电影(不包括"流浪地球")
match (movie:Movie {name:"流浪地球"})<-[:ActedIn]-(actor:Actor)-[:ActedIn]->(otherMovie:Movie) return otherMovie
// WHERE查询的形式
MATCH (movie:Movie)<-[r:ActedIn]-(actor:Actor)-[:ActedIn]->(otherMovie:Movie)
WHERE movie.name = "流浪地球"
RETURN otherMovie
ORDER BY otherMovie.year LIMIT 10
panchaoxin wechat
关注我的公众号
支持一下