一、安装
1.0 前置条件
安装配置好 JDK 17 及以上版本。
Neo4j 5.26.10 版本的安装与基础使用方法。内容涵盖 JDK 17 前置环境配置、软件安装步骤、环境变量设置以及服务的启停控制。详细说明了如何通过本地浏览器访问数据库界面,并演示了如何导入 dump 文件。此外,文章整理了核心的 Cypher 查询语言指令,包括节点的创建、匹配、更新、删除及合并操作,同时提供了管理命令参考,涉及约束、索引、系统信息及用户权限管理等常用功能。

安装配置好 JDK 17 及以上版本。
注意: 本文示例使用 Neo4j 5.26.10 版本,需匹配 Java 17。
直接安装即可。
配置以下环境变量:


下载解压即可,Windows 为绿色版本。

添加 neo4j 的安装路径到环境变量:

进入安装目录的 bin 文件夹,在终端窗口输入:
./neo4j.bat console

关闭服务直接按 Ctrl+C 即可。查看运行状态,终端输入 neo4j status。
开启后访问以下网址即可查看:
neo4j-admin database load --from-path="D:\develop\neo4j-community-5.26.10\dumps" --overwrite-destination=true neo4j

注意,dump 文件的名称必须和数据库同名,否则将导致错误。


Neo4j 的常用命令主要分为两大类:Cypher 查询语言和Neo4j 管理命令。
Cypher 是 Neo4j 的声明式图查询语言,用于操作和查询图数据。
用于创建节点、关系和属性。
-- 创建单个节点(无标签,无属性)
CREATE (n)
-- 创建带标签的节点
CREATE (n:Person)
-- 创建带标签和属性的节点
CREATE (n:Person {name: 'John Doe', age: 30})
-- 创建多个节点
CREATE (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
-- 在两个已存在节点间创建关系
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
用于查询图中的节点和关系。
-- 查找所有节点
MATCH (n) RETURN n
-- 查找特定标签的节点
MATCH (n:Person) RETURN n
-- 根据属性查找节点
MATCH (n:Person {name: 'Alice'}) RETURN n
-- 或使用 WHERE 子句
MATCH (n:Person) WHERE n.name = 'Alice' AND n.age > 25 RETURN n
-- 查找 KNOWS 关系
MATCH ()-[r:KNOWS]->() RETURN r
-- 查找从 Alice 出发的 KNOWS 关系
MATCH (a:Person {name: 'Alice'})-[r:KNOWS]->(b) RETURN a, r, b
用于修改节点或关系的属性或标签。
-- 设置/更新属性
MATCH (n:Person {name: 'Alice'}) SET n.age = 31, n.city = 'Berlin' RETURN n
-- 移除属性
MATCH (n:Person {name: 'Alice'}) REMOVE n.city RETURN n
-- 或者使用 SET n.property = NULL
-- 添加标签
MATCH (n:Person {name: 'Alice'}) SET n:Employee RETURN n
-- 移除标签
MATCH (n:Person:Employee {name: 'Alice'}) REMOVE n:Employee RETURN n
警告:必须先删除关系,才能删除节点。
-- 删除一个节点(确保该节点无任何关系)
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
'有则返回,无则创建'。
-- 合并节点
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
这些命令主要用于数据库管理、索引、约束和元数据查询。
-- 创建唯一性约束
CREATE CONSTRAINT constraint_name FOR (n:Person) REQUIRE n.email IS UNIQUE
-- 查看所有约束
SHOW CONSTRAINTS
-- 删除约束
DROP CONSTRAINT constraint_name
-- 创建索引
CREATE INDEX index_name FOR (n:Person) ON (n.name)
-- 创建复合索引
CREATE INDEX index_name FOR (n:Person) ON (n.firstName, n.lastName)
-- 查看所有索引
SHOW INDEXES
-- 删除索引
DROP INDEX index_name
-- 查看数据库基本信息
:sysinfo
-- 查看图数据库的结构
CALL db.schema.visualization()
-- 列出所有数据库
SHOW DATABASES
-- 查看当前数据库的状态和信息
CALL db.info()
-- 显示所有用户
SHOW USERS
-- 创建用户
CREATE USER username SET PASSWORD 'password' CHANGE NOT REQUIRED SET STATUS ACTIVE
-- 更改用户密码
ALTER USER username SET PASSWORD 'newpassword' CHANGE NOT REQUIRED
MATCH (n) DETACH DELETE n
这会删除所有节点和关系,但不会删除索引和约束。
-- 统计图中所有节点的数量
MATCH (n) RETURN count(n)
-- 统计某个标签的节点数量
MATCH (n:Person) RETURN count(n)
:help - 查看帮助:play start - 打开初学指南:history - 查看命令历史
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online
解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL 转 CSV/JSON/XML在线工具,online