Neo4j简介

Neo4j是一款基于Java开发的开源NoSQL图数据库,自2003年开始研发,于2007年发布首个版本。目前已被全球数十万家企业和组织广泛采用。

作为专业级图数据库,Neo4j不仅实现了图数据模型的完整存储,还具备企业级数据库特性,包括:

  • ACID事务支持
  • 集群部署能力
  • 备份与故障转移机制

版本说明

  • 企业版:需付费授权,提供高可用性和热备份等高级功能
  • 社区开源版:免费使用,但仅支持单机运行

Neo4j图数据库核心概念

节点(Node)

  • 图数据库中的基本数据单元
  • 通过关系与其他节点相连
  • 可包含一个或多个属性(键值对)
  • 可标记一个或多个标签(Label)
  • 类比关系型数据库:节点≈表,标签≈表名,属性≈列

关系(Relationship)

  • 连接两个节点的有向边
  • 可包含一个或多个属性

属性(Property)

  • 命名的键值对
  • 支持索引和约束
  • 支持创建复合索引

标签(Label)

  • 用于节点分类
  • 节点可拥有多个标签
  • 标签索引可加速节点查找

Neo4j安装指南

安装步骤

  1. 将Neo4j加入yum源
  2. 使用yum安装
  3. 修改配置文件
  4. 启动服务

详细流程

  1. 配置yum源
rpm --import http://debian.neo4j.org/neotechnology.gpg.key
vim /etc/yum.repos.d/neo4j.repo

添加以下内容:

[neo4j]
name=Neo4j RPM Repository
baseurl=http://yum.neo4j.org/stable
enabled=1
gpgcheck=1

  1. 安装Neo4j
yum install neo4j

  1. 修改配置文件(/etc/neo4j/neo4j.conf)
# 目录配置
dbms.directories.data=/var/lib/neo4j/data
dbms.directories.plugins=/var/lib/neo4j/plugins
dbms.directories.certificates=/var/lib/neo4j/certificates
dbms.directories.logs=/var/log/neo4j
dbms.directories.lib=/usr/share/neo4j/lib
dbms.directories.run=/var/run/neo4j
dbms.directories.import=/var/lib/neo4j/import

# 内存配置
dbms.memory.heap.initial_size=512m

# 网络配置
dbms.connectors.default_listen_address=0.0.0.0
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=:7473
dbms.connector.bolt.enabled=true
dbms.connector.bolt.listen_address=:7687

  1. 启动服务
neo4j start

成功启动后会显示服务信息:

Active database: graph.db
Directories in use:
home: /var/lib/neo4j
config: /etc/neo4j
logs: /var/log/neo4j
plugins: /var/lib/neo4j/plugins
import: /var/lib/neo4j/import
data: /var/lib/neo4j/data
certificates: /var/lib/neo4j/certificates
run: /var/run/neo4j
Starting Neo4j.
Started neo4j (pid 2463). It is available at http://localhost:7474/

Neo4j管理后台登录

  • 访问地址:http://192.168.88.161:7474
  • 连接URL:bolt://192.168.88.161:7687
  • 用户名:neo4j
  • 密码:123456(首次登录默认为neo4j)

Cypher 简介与使用指南

Cypher 是 Neo4j 图数据库的专用查询语言,类似于传统数据库中的 SQL,但专为图数据结构优化设计,能够高效执行图数据的查询和更新操作。

Cypher 基础命令与语法

  1. CREATE 命令 - 创建节点
  2. MATCH 命令 - 查询数据
  3. MERGE 命令 - 匹配或创建节点
  4. 关系(Relationship)命令 - 处理节点间关系
  5. WHERE 命令 - 添加查询条件
  6. DELETE 命令 - 删除节点/关系
  7. SORT 命令 - 排序结果
  8. 字符串函数 - 字符串处理
  9. 聚合函数 - 数据聚合
  10. 索引(Index)命令 - 创建和管理索引

1. CREATE 命令

用于创建图数据中的节点。

语法格式:

CREATE (node_name:Node_Label {
    property1: value1,
    property2: value2,
    ...
})

说明:

  • CREATE 是关键字
  • 节点名称和标签放在小括号 ()
  • 节点属性放在大括号 {} 中,采用 属性名:值 的形式,多个属性用逗号分隔

示例:

CREATE (e:Employee {
    id: 222,
    name: 'Bob',
    salary: 6000,
    deptno: 12
})


2. MATCH 命令

用于查询图数据库中的现有数据。

基本语法:

MATCH (node_name:Node_Label) 
RETURN property1, property2, ...

说明:

  • 节点名称和标签放在小括号内
  • 使用 RETURN 语句指定要返回的属性

示例:

MATCH (e:Employee) 
RETURN e.id, e.name, e.salary, e.deptno

MATCH (n) 
RETURN n  -- 查询所有节点


3. MERGE 命令

当目标节点存在时,其功能等同于 MATCH 命令;若节点不存在,则等同于 CREATE 命令。

示例:

MERGE (e:Employee {id:146, name:'Lucer', salary:3500, deptno:16})

再次执行该查询时,数据库中的数据量不会增加,因为已存在相同数据,MERGE 匹配成功。


4. 关系操作命令

使用 CREATE 创建关系

注意事项:

  • 必须创建有方向性的关系,否则会报错

示例:

-- 创建从节点 p1 指向 p2 的有向关系,关系标签为 Buy
CREATE (p1:Profile1)-[r:Buy]->(p2:Profile2)

使用 MERGE 创建关系

示例:

-- 创建节点 p1 到 p2 的无方向关系,关系标签为 miss
MERGE (p1:Profile1)-[r:miss]-(p2:Profile2)


5. WHERE 命令

用于添加查询条件,类似于 SQL 中的 WHERE 子句。

示例:

-- 查询 Employee 节点中 id 值为 123 的节点
MATCH (e:Employee)
WHERE e.id = 123
RETURN e


6. DELETE 命令

删除节点/关系及其关联的属性。

注意事项:

  • 删除节点的同时,也要删除关联的关系边

示例:

MATCH (p1:Profile1)-[r]-(p2:Profile2)
DELETE p1, r, p2

7. sort

在Cypher查询语言中,排序操作使用ORDER BY子句实现。

升序排列示例

MATCH (e:Employee)
RETURN e.id, e.name, e.salary, e.deptno
ORDER BY e.id

降序排列示例

MATCH (e:Employee)
RETURN e.id, e.name, e.salary, e.deptno
ORDER BY e.salary DESC

字符串函数

toUpper() 函数

将输入字符串转换为大写字母。

示例:

MATCH (e:Employee) 
RETURN e.id, toUpper(e.name), e.salary, e.deptno

toLower() 函数

将输入字符串转换为小写字母。

示例:

MATCH (e:Employee) 
RETURN e.id, toLower(e.name), e.salary, e.deptno

substring() 函数

提取子字符串,从 start_index 开始到 end_index-1 结束。

语法:

substring(input_str, start_index, end_index)

示例(返回员工名字的前两个字母):

MATCH (e:Employee) 
RETURN e.id, substring(e.name, 0, 2), e.salary, e.deptno

replace() 函数

替换字符串中的指定部分。

语法:

replace(input_str, origin_str, new_str)

示例(为员工名字添加后缀):

MATCH (e:Employee)
RETURN e.id, replace(e.name, e.name, e.name + "_HelloWorld"), e.salary, e.deptno

示例(还原操作):

MATCH (e:Employee)
RETURN e.id, replace(e.name, "_HelloWorld", ""), e.salary, e.deptno

聚合函数

count() 函数

统计匹配的记录数量。

示例(统计员工总数):

MATCH (e:Employee) 
RETURN count(*)

max() 函数

返回匹配记录中的最大值。

示例(查询最高工资):

MATCH (e:Employee) 
RETURN max(e.salary)

min() 函数

返回匹配记录中的最小值。

示例(查询最低工资):

MATCH (e:Employee) 
RETURN min(e.salary)

sum() 函数

计算匹配记录中某字段的总和。

示例(计算工资总额):

MATCH (e:Employee) 
RETURN sum(e.salary)

avg() 函数

计算匹配记录中某字段的平均值。

示例(计算平均工资):

MATCH (e:Employee) 
RETURN avg(e.salary)

字符串函数

toUpper() 函数

将输入字符串转换为大写字母。

示例:

MATCH (e:Employee) 
RETURN e.id, toUpper(e.name), e.salary, e.deptno

toLower() 函数

将输入字符串转换为小写字母。

示例:

MATCH (e:Employee) 
RETURN e.id, toLower(e.name), e.salary, e.deptno

substring() 函数

提取子字符串,从 start_index 开始到 end_index-1 结束。

语法:

substring(input_str, start_index, end_index)

示例(返回员工名字的前两个字母):

MATCH (e:Employee) 
RETURN e.id, substring(e.name, 0, 2), e.salary, e.deptno

replace() 函数

替换字符串中的指定部分。

语法:

replace(input_str, origin_str, new_str)

示例(为员工名字添加后缀):

MATCH (e:Employee)
RETURN e.id, replace(e.name, e.name, e.name + "_HelloWorld"), e.salary, e.deptno

示例(还原操作):

MATCH (e:Employee)
RETURN e.id, replace(e.name, "_HelloWorld", ""), e.salary, e.deptno

聚合函数

count() 函数

统计匹配的记录数量。

示例(统计员工总数):

MATCH (e:Employee) 
RETURN count(*)

max() 函数

返回匹配记录中的最大值。

示例(查询最高工资):

MATCH (e:Employee) 
RETURN max(e.salary)

min() 函数

返回匹配记录中的最小值。

示例(查询最低工资):

MATCH (e:Employee) 
RETURN min(e.salary)

sum() 函数

计算匹配记录中某字段的总和。

示例(计算工资总额):

MATCH (e:Employee) 
RETURN sum(e.salary)

avg() 函数

计算匹配记录中某字段的平均值。

示例(计算平均工资):

MATCH (e:Employee) 
RETURN avg(e.salary)
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐