圖數據庫功能: 主要是處理具備深度 相關聯的數據,尤爲是幾何性增加的這種關係,比關係型數據庫更具備優點。javascript
一個圖是由 節點和 關係構成, 節點和關係均可以包含屬性。php
一個關係鏈接兩個節點,必須有一個開始節點和結束節點。java
Neo4j 的安裝node
下載地址:桌面版(學習使用)https://neo4j.com/artifact.php?name=neo4j-desktop-offline-1.2.1-setup.exe數據庫
windows 下安裝社區版 zipwindows
1.解壓文件學習
2. cmd 進入bin 下面,執行 neo4j install-service spa
3. neo4j start 啓動服務對象
4.http://localhost:7474 blog
5. neo4j stop 中止服務
6. neo4j uninstall-service 卸載
7. 默認用戶名稱和密碼 neo4j neo4j
Neo4j 的使用
命令 |
格式 | 示例 |
新增 節點名稱:標籤名稱{key:value} 須要注意的是 key 不能使用雙引號包裹 |
CREATE ( <node-name>:<label-name> { <key>:<Value> ........ <n-key>:<n-Value> } ) |
create(user:Use {name:"小明",age:12 }) |
一個節點能夠建立多個標籤 | CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>) |
|
MATCH查詢 |
match(user:User) return user match(user:User) return user.name |
|
創建關聯 | create(user:User)-[r:Goods]->(book:Book) | |
匹配 創建新的關係 | match(user:User),(book:Book) create (user)-[r:Goods{price:12,num:1}]->(book) return r | |
更新 | match(user:User) set user.userName = "xiaomi" return user |
基本的用法
咱們先以數據庫表進行抽象(User 用戶表 Goods 商品表 Records 購買記錄 )
對應字段 :User(name,age) Goods(name,price) Records(userName,goodName,num)
1. 首先咱們建立一個用戶 類
添加兩我的小明和小花
create (user:User{name:"xiaoming",age:12})
create (user:User{name:"xiaoming",age:13})
create (user:User{name:"xiaohua",age:15})
2. 建立兩個商品
create (good:Goods{name:"肯德基",price:40})
create (good:Goods{name:"java書",price:24.5})
3. 小明買了兩本書
match(user:User),(good:Goods) where user.name = "xiaoming" and good.name = "java書" create (user)-[r:Records{userName:user.name,goodName:good.name,num:2}]->(good) return r
4. 查詢總共有多少人
match(user:User) return user
5. 小明修改了書的數量
match(user:User{name:"xiaoming"})-[r:Records{userName:user.name,goodName:good.name}]->(good:Goods{name:"java書"}) set r.num = 3 return r
6. 小明退了買的書
match(user:User{name:"xiaoming"})-[r:Records{userName:user.name,goodName:good.name}]->(good:Goods{name:"java書"}) delete r
7. 移除對象的屬性(remove 用於移除屬性或者標籤)
match(user:User{name:"xiaoming"}) remove user.name return user (至關於只移除了小明裏面的name 屬性)
建立一個深度比較長的數據(案例1)
深度進行匹配
match(n:Num{name:3})-[r:Father]->(b:Num)-[r1:Father]->(c:Num) return n,b,c
結果:
開始(案例2)
進行匹配
match(n:Num{name:3})-[r:Father | Mother]->(b:Num)-[r1:Father | Mother]->(c:Num) return n,b,c
結果: