一、安装
1.0 前置条件
安装配置好jdk17及以上
注意我使用的是neo4j 5.26.10版本,匹配java17刚好
Java Archive Downloads - Java SE 17.0.12 and earlier
无脑安装即可
配置以下环境变量


1.1 安装程序
Neo4j Deployment Center - Graph Database & Analytics

下载解压即可,Windows是绿色版本
1.2 配置环境
添加neo4j的地址

二、基本使用
2.1 开启、关闭和查看运行状态
进入安装目录的bin文件夹,cmd窗口输入
./neo4j.bat console

关闭直接ctrl+c即可关闭
查看运行状态,cmd窗口输入 neo4j status
2.2 查看数据库
开启后进入以下网址即可查看
2.3 导入dump文件
bash
neo4j-admin database load --from-path="D:\develop\neo4j-community-5.26.10\dumps" --overwrite-destination=true neo4j

注意,dump文件的名称必须和数据库同名

不然会报错

三、neo4j常用命令
Neo4j 的常用命令主要分为两大类:Cypher 查询语言 和Neo4j 管理命令。下面我将为您详细列出并解释这些命令。
3.1 Cypher 查询语言(核心操作)
Cypher 是 Neo4j 的声明式图查询语言,用于操作和查询图数据。它的语法非常直观,旨在匹配图中的模式。
3.1.1 创建(CREATE)
用于创建节点、关系和属性。
- 创建节点:
bash
-- 创建单个节点(无标签,无属性)
CREATE (n)
-- 创建带标签的节点
CREATE (n:Person)
-- 创建带标签和属性的节点
CREATE (n:Person {name: 'John Doe', age: 30})
-- 创建多个节点
CREATE (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
- 创建关系:
bash
-- 在两个已存在节点间创建关系(需要先找到节点)
MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[r:KNOWS {since: 2020}]->(b)
RETURN r
-- 在创建节点的同时创建关系(适用于节点也不存在时)
CREATE (a:Person {name: 'Alice'})-[r:LOVES {since: 2021}]->(b:Person {name: 'Bob'})
RETURN a, r, b
3.1.2 匹配(MATCH)
用于查询图中的节点和关系。通常与 `RETURN` 或 `WHERE` 等子句联用。
- 查找所有节点:
bash
MATCH (n) RETURN n
- 查找特定标签的节点:
bash
MATCH (n:Person) RETURN n
- 根据属性查找节点:
bash
MATCH (n:Person {name: 'Alice'}) RETURN n
-- 或使用 WHERE 子句
MATCH (n:Person)
WHERE n.name = 'Alice' AND n.age > 25
RETURN n
- 查找关系:
bash
-- 查找所有 KNOWS 关系
MATCH ()-[r:KNOWS]->() RETURN r
-- 查找从 Alice 出发的 KNOWS 关系
MATCH (a:Person {name: 'Alice'})-[r:KNOWS]->(b) RETURN a, r, b
3.1.3 更新(SET, REMOVE)
用于修改节点或关系的属性或标签。
- 设置/更新属性:
bash
MATCH (n:Person {name: 'Alice'})
SET n.age = 31, n.city = 'Berlin'
RETURN n
- 移除属性:
bash
MATCH (n:Person {name: 'Alice'})
REMOVE n.city
RETURN n
-- 或者使用 SET n.property = NULL
- 添加标签:
bash
MATCH (n:Person {name: 'Alice'})
SET n:Employee
RETURN n
- 移除标签:
bash
MATCH (n:Person:Employee {name: 'Alice'})
REMOVE n:Employee
RETURN n
3.1.4 删除(DELETE)
用于删除节点和关系。
警告:必须先删除关系,才能删除节点。
bash
-- 删除一个节点(确保该节点无任何关系)
MATCH (n:Person {name: 'Bob'})
DELETE n
-- 删除一个节点及其所有相连的关系
MATCH (n:Person {name: 'Bob'})
DETACH DELETE n
-- 删除关系
MATCH (a:Person {name: 'Alice'})-[r:KNOWS]->(b:Person {name: 'Bob'})
DELETE r
3.1.5 合并(MERGE)
"有则返回,无则创建"。它确保一个模式存在于图中。如果该模式不存在,则创建它;如果存在,则只是匹配到它。强烈建议与 ON CREATE 和 ON MATCH 一起使用。
bash
-- 合并节点(如果不存在则创建,并设置初始属性)
MERGE (n:Person {name: 'Alice'})
ON CREATE SET n.created_at = timestamp()
ON MATCH SET n.last_seen = timestamp()
RETURN n
-- 合并路径(节点和关系)
MERGE (a:Person {name: 'Alice'})-[r:KNOWS]->(b:Person {name: 'Bob'})
ON CREATE SET r.since = 2023
RETURN a, r, b
3.2 Neo4j 管理命令(在 Neo4j Browser 或 -Shell 中执行)
这些命令主要用于数据库管理、索引、约束和元数据查询。
3.2.1 约束(Constraints)
用于保证数据的完整性。
- 创建唯一性约束:
bash
CREATE CONSTRAINT constraint_name FOR (n:Person) REQUIRE n.email IS UNIQUE
- 查看所有约束:
bash
SHOW CONSTRAINTS
- 删除约束:
bash
DROP CONSTRAINT constraint_name
3.2.2 索引(Indexes)
用于大幅提高查询性能。
- 创建索引:
bash
CREATE INDEX index_name FOR (n:Person) ON (n.name)
- 创建复合索引:
bash
CREATE INDEX index_name FOR (n:Person) ON (n.firstName, n.lastName)
- 查看所有索引:
bash
SHOW INDEXES
- 删除索引:
bash
DROP INDEX index_name
3.2.3 信息查询(Schema & Info)
- 查看数据库基本信息:
bash
:sysinfo
- 查看图数据库的结构(所有标签、关系类型、属性):
bash
CALL db.schema.visualization()
- 列出所有数据库:
bash
SHOW DATABASES
- 查看当前数据库的状态和信息:
bash
CALL db.info()
3.2.4 用户与权限管理(企业版功能)
- 显示所有用户:
bash
SHOW USERS
- 创建用户:
bash
CREATE USER username SET PASSWORD 'password' CHANGE NOT REQUIRED SET STATUS ACTIVE
- 更改用户密码:
bash
ALTER USER username SET PASSWORD 'newpassword' CHANGE NOT REQUIRED
3.3 实用技巧和命令
3.3.1 清空整个数据库(谨慎使用!)
bash
MATCH (n) DETACH DELETE n
这会删除所有节点和关系,但不会删除索引和约束。
3.3.2 计数:
bash
-- 统计图中所有节点的数量
MATCH (n) RETURN count(n)
-- 统计某个标签的节点数量
MATCH (n:Person) RETURN count(n)
3.3.3 在 Neo4j Browser 中使用命令行:
- :help - 查看帮助
- :play start - 打开初学指南
- :history - 查看命令历史
希望这个列表对您有帮助!Neo4j 的 语言非常强大且易读,最好的学习方式就是在 Neo4j Browser 中实际操作。