1. Neo4j 图数据库基础与核心概念
图数据库与传统关系型数据库有着本质区别。Neo4j 作为最流行的图数据库之一,其核心在于用节点(Node)、关系(Relationship)和属性(Property)来构建数据模型。这种结构特别适合处理高度互联的数据场景,比如社交网络、推荐系统、知识图谱等。
1.1 图数据库的核心组件
在 Neo4j 中,数据以图的形式存储,包含三个基本元素:
-
节点:图中的实体,可以类比为关系型数据库中的"行"。每个节点可以有:
- 标签(Label):相当于分类,如
:Person、:Product - 属性(Property):键值对形式存储的详细信息,如
{name: "张三", age: 25}
- 标签(Label):相当于分类,如
-
关系:连接两个节点的有向边,是图数据库最强大的特性。关系具有:
- 类型(Type):如
:FRIEND、:PURCHASED - 方向:从起始节点指向终止节点
- 属性:也可以存储额外的信息,如
{since: 2020}
- 类型(Type):如
-
路径:由节点和关系组成的序列,表示图中的遍历路线
1.2 Cypher 查询语言简介
Cypher 是 Neo4j 的专用查询语言,其设计灵感来自 SQL 和 ASCII-art。它的语法直观易读,通过模式匹配来查询和操作图数据。Cypher 的几个关键特点:
- 声明式语法:描述"要什么"而非"怎么做"
- 模式匹配:使用类似图的语法来描述数据模式
- 链式操作:支持将多个操作串联成一个查询
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Neo4j 核心语法详解
2.1 数据创建(CREATE)
创建数据是图数据库操作的基础,Neo4j 提供了灵活的创建方式。
2.1.1 基本节点创建
cypher复制// 创建带标签和属性的节点
CREATE (n:Person {name: '张三', age: 25, city: '北京'})
// 创建多个标签的节点
CREATE (n:Person:Employee {id: 123})
注意:CREATE 语句会无条件创建新数据,即使完全相同的节点已存在也会新建。如需避免重复,应使用 MERGE(后文介绍)
2.1.2 关系创建
关系必须连接两个已存在的节点:
cypher复制// 先创建节点
CREATE (a:Person {name: 'A'}), (b:Person {name: 'B'})
// 然后创建关系
CREATE (a)-[:FRIEND {since: 2020}]->(b)
也可以一步完成节点和关系的创建:
cypher复制CREATE (a:Person {name: 'A'})-[:FRIEND]->(b:Person {name: 'B'})
2.1.3 批量创建技巧
对于大量数据,批量创建效率更高:
cypher复制CREATE
(p1:Person {name: '张三', age: 25}),
(p2:Person {name: '李四', age: 28}),
(p3:Person {name: '王五', age: 30}),
(p1)-[:FRIEND]->(p2),
(p2)-[:FRIEND]->(p3),
(p1)-[:COLLEAGUE]->(p3)
2.2 数据查询(MATCH)
MATCH 是 Cypher 中最常用的关键字,用于查找图中的模式。
2.2.1 基本节点查询
cypher复制// 查询所有节点
MATCH (n) RETURN n
// 按标签查询
MATCH (p:P
