一、安裝
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 查看數據庫
開啟后進入以下網址即可查看
http://localhost:7474
2.3?導入dump文件
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)
用于創建節點、關系和屬性。
- ? 創建節點:
-- 創建單個節點(無標簽,無屬性)
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
3.1.2 匹配(MATCH)
用于查詢圖中的節點和關系。通常與 `RETURN` 或 `WHERE` 等子句聯用。
- 查找所有節點:
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
3.1.3 更新(SET, REMOVE)
用于修改節點或關系的屬性或標簽。
- 設置/更新屬性:
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
3.1.4 刪除(DELETE)
用于刪除節點和關系。
警告:必須先刪除關系,才能刪除節點。
-- 刪除一個節點(確保該節點無任何關系)
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 一起使用。
-- 合并節點(如果不存在則創建,并設置初始屬性)
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)
用于保證數據的完整性。
- 創建唯一性約束:
CREATE CONSTRAINT constraint_name FOR (n:Person) REQUIRE n.email IS UNIQUE
- 查看所有約束:
SHOW CONSTRAINTS
- 刪除約束:
DROP CONSTRAINT constraint_name
3.2.2 索引(Indexes)
用于大幅提高查詢性能。
- 創建索引:
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
3.2.3 信息查詢(Schema & Info)
- 查看數據庫基本信息:
:sysinfo
- 查看圖數據庫的結構(所有標簽、關系類型、屬性):
CALL db.schema.visualization()
- 列出所有數據庫:
SHOW DATABASES
- 查看當前數據庫的狀態和信息:
CALL db.info()
3.2.4 用戶與權限管理(企業版功能)
- 顯示所有用戶:
SHOW USERS
- 創建用戶:
CREATE USER username SET PASSWORD 'password' CHANGE NOT REQUIRED SET STATUS ACTIVE
- 更改用戶密碼:
ALTER USER username SET PASSWORD 'newpassword' CHANGE NOT REQUIRED
3.3 實用技巧和命令
3.3.1 清空整個數據庫(謹慎使用!)
MATCH (n) DETACH DELETE n
這會刪除所有節點和關系,但不會刪除索引和約束。
3.3.2 計數:
-- 統計圖中所有節點的數量
MATCH (n) RETURN count(n)-- 統計某個標簽的節點數量
MATCH (n:Person) RETURN count(n)
3.3.3 在 Neo4j Browser 中使用命令行:
- :help - 查看幫助
- :play start - 打開初學指南
- :history - 查看命令歷史
希望這個列表對您有幫助!Neo4j 的 語言非常強大且易讀,最好的學習方式就是在 Neo4j Browser 中實際操作。