Neo4j 的查询语言叫 Cypher,语法很像 “用英语描述关系”,特别直观。下面用社交网络场景举例,教你快速上手核心查询操作:
假设我们有一个简单的社交网络,包含:
- 节点:用户(Person)、兴趣(Interest)、城市(City)
- 关系:
FOLLOWS
(关注)、LIKES
(喜欢)、LIVES_IN
(住在)
用 Cypher 语句创建数据:
MATCH (p:Person)
RETURN p
MATCH
:告诉 Neo4j 你想 “匹配” 什么模式(比如节点、关系)
(p:Person)
:定义一个变量 p
,代表类型为 Person
的节点
RETURN p
:返回匹配到的节点
MATCH (p:Person)-[:LIVES_IN]->(c:City {name: "Shanghai"})
RETURN p.name, c.name
(p:Person)-[:LIVES_IN]->(c:City {...})
:匹配 “用户→住在→上海” 的关系路径
RETURN p.name, c.name
:只返回用户名字和城市名字
MATCH (a:Person {name: "Alice"})-[:FOLLOWS]->(followed)
RETURN followed.name
(a:Person {...})-[:FOLLOWS]->(followed)
:匹配 “Alice→关注→某人” 的路径
- 结果:
Bob
MATCH (a:Person {name: "Alice"})-[:FOLLOWS]->(:Person)-[:FOLLOWS]->(second_degree)
WHERE a <> second_degree
(a)-[:FOLLOWS]->(:Person)-[:FOLLOWS]->(second_degree)
:匹配两步关注关系
- 结果:
Charlie
MATCH (p1:Person {name: "Alice"})-[:LIKES]->(interest)<-[:LIKES]-(p2:Person)
WHERE p1 <> p2
(p1)-[:LIKES]->(interest)<-[:LIKES]-(p2)
:匹配 “人→喜欢→兴趣←喜欢←人” 的路径
- 结果:如果有其他人也喜欢 Technology,就会显示
MATCH (p:Person)-[:LIVES_IN]->(c:City)
RETURN c.name, COUNT(p) AS user_count
ORDER BY user_count DESC
COUNT(p)
:统计每个城市关联的用户数量
ORDER BY user_count DESC
:按用户数量降序排列
MATCH (p:Person)<-[:FOLLOWS]-()
<-[:FOLLOWS]-()
:匹配 “被任何人关注” 的路径
假设我们有一个医药知识图谱,包含:
- 节点:药品(Drug)、疾病(Disease)、副作用(SideEffect)
- 关系:
Treats
(治疗)、Causes
(导致)、Contraindication
(禁忌)
MATCH (d:Drug)-[:Treats]->(dis:Disease {name: "Hypertension"})
RETURN d.name
MATCH (aspirin:Drug {name: "Aspirin"})-[:Causes]->(se:SideEffect)
RETURN se.name
MATCH (ibuprofen:Drug {name: "Ibuprofen"})-[:Contraindication]->(warfarin:Drug {name: "Warfarin"})
RETURN ibuprofen.name, warfarin.name
在 Neo4j Browser 中执行查询后,你可以:
- 点击结果中的节点,查看它的所有关系
- 使用
LIMIT
限制返回数量,比如 RETURN p LIMIT 10
- 使用
DISTINCT
去重,比如 RETURN DISTINCT p.name
如果想导出数据,可以用 CSV
格式:
MATCH (p:Person)
RETURN p.name, p.age
执行后,点击查询结果上方的 Download CSV 按钮。
- 用
MATCH
定义你想查找的 “关系模式”(比如 “人→关注→人”)
- 用括号
()
表示节点,冒号 :
指定节点类型(如 :Person
)
- 用方括号
[]
表示关系,箭头 ->
表示方向(如 [:FOLLOWS]->
)
- 用
RETURN
指定你想看到的结果(节点、属性或统计值)
Neo4j 的强大之处在于,它让你用 “描述关系” 的方式查询数据,就像你在大脑中想象人际关系网一样自然!