一、環(huán)境搭建
本著一切從簡的原則(只怪虛擬機每次啟動太麻煩了)稠鼻,我選擇在本地搭建環(huán)境(win10+JDK8)Neo4j環(huán)境。
1) 獲取安裝包
官方地址:https://neo4j.com/download-center/#community
2)解壓文件
將文件解壓到本地環(huán)境中狂票,不建議解壓到C盤
3)添加環(huán)境變量
- 添加環(huán)境變量
NEO4J_HOME
候齿,比如NEO4J_HOME = D:\Neo4j\neo4j-community-3.5.7
,這里換成你的解壓目錄即可 - path中添加
%NEO4J_HOME%\bin;
即可闺属,同JAVA_HOME
的配置
4)啟動環(huán)境
a.命令行啟動
cmd中輸入neo4j.bat console
命令即可打開neo4j慌盯,訪問http://localhost:7474出現(xiàn)neo4j頁面,那么祝賀你掂器,環(huán)境搭建成功亚皂!
b.添加系統(tǒng)服務(wù)
當然,我們可以直接將neo4j寫入系統(tǒng)服務(wù)国瓮,使用命令
-
neo4j install-service
安裝服務(wù) -
neo4j uninstall-service
卸載服務(wù)
此后灭必,我們就可以同其他服務(wù)一樣便捷啟動neo4j了 -
neo4j start
啟動 -
neo4j stop
停止 -
neo4j restart
重啟 -
neo4j status
查詢狀態(tài)
二、簡單語法
1)增加數(shù)據(jù)
- 增加節(jié)點
CREATE (n:Person{name:'Jack',age:24})
表示添加一個屬性為{name:'Jack',age:24}的Person節(jié)點乃摹,別名為n禁漓,別名可以用于一組操作中的后續(xù)操作來引用此對象,比如添加節(jié)點之后查看該節(jié)點:
CREATE (n:Person{name:'',age:24}) return n;
- 增加節(jié)點之間的關(guān)系
CREATE (Jack)-[:brother]->(Peter)
表示創(chuàng)建Jack和Peter之間的關(guān)系brother孵睬,注意播歼,這里創(chuàng)建關(guān)系使用的是別名,并且該操作是跟在其他操作之后的掰读。否則默認將創(chuàng)建兩個空節(jié)點秘狞。
2)查詢數(shù)據(jù)
- 查詢節(jié)點
MATCH (a:Person{name:'Jack'}) return a
查詢屬性{name:'Jack'}的Person節(jié)點
3)刪除數(shù)據(jù)
- 刪除某個節(jié)點
MATCH (a:Person{name:'Jack'}) delete a
刪除數(shù)據(jù)是先查詢該數(shù)據(jù)叭莫,在執(zhí)行刪除操作。
4)修改數(shù)據(jù)
- 修改節(jié)點
MATCH (a:Person{name:'Jack'}) set a.name = 'Tom'
修改數(shù)據(jù)同樣先查詢數(shù)據(jù)烁试,再將需要的屬性進行設(shè)置
三雇初、構(gòu)建人物關(guān)系圖
基本節(jié)點的增刪改查操作學會了,我們就實現(xiàn)一個簡單的人物關(guān)系圖廓潜,使用的數(shù)據(jù)是最近特別火的電視劇——破冰行動抵皱。
輸入以下代碼:
create ( lwm: Person {name:'李維民',job:'Police',TVplay:'破冰行動'})
create ( myb: Person {name:'馬云波',job:'Police',TVplay:'破冰行動'})
create ( zhjl: Person {name:'趙嘉良',job:'Police',TVplay:'破冰行動'})
create ( mw: Person {name:'馬雯',job:'Police',TVplay:'破冰行動'})
create ( lf: Person {name:'李飛',job:'Police',TVplay:'破冰行動'})
create ( cyq: Person {name:'蔡永強',job:'Police',TVplay:'破冰行動'})
create ( chgr: Person {name:'陳光榮',job:'Police',TVplay:'破冰行動'})
create ( chwz: Person {name:'陳文澤',job:'Mayor',TVplay:'破冰行動'})
create ( lyd: Person {name:'林耀東',job:'Dealer',TVplay:'破冰行動'})
create ( lyh: Person {name:'林耀華',job:'Dealer',TVplay:'破冰行動'})
create ( lzh: Person {name:'林宗輝',job:'Dealer',TVplay:'破冰行動'})
create ( lshwen: Person {name:'林勝文',job:'Dealer',TVplay:'破冰行動'})
create ( lshwu: Person {name:'林勝武',job:'Dealer',TVplay:'破冰行動'})
create ( cj: Person {name:'蔡軍',job:'Police',TVplay:'破冰行動'})
create ( sy: Person {name:'宋楊',job:'Police',TVplay:'破冰行動'})
create ( lshb: Person {name:'林水伯',job:'Teacher',TVplay:'破冰行動'})
create ( chk: Person {name:'陳軻',job:'Nurse',TVplay:'破冰行動'})
create
( lwm)-[:師父]->(myb),
( lwm)-[:養(yǎng)父]->(lf),
( lwm)-[:上級]->(mw),
( zhjl)-[:線人]->(lwm),
( myb)-[:生死之交]->(lf),
( myb)-[:上級]->(chgr),
( myb)-[:上級]->(cyq),
( chwz)-[:哥哥]->(chgr),
( chwz)-[:保護傘]->(lyd),
( chgr)-[:同事]->(cyq),
( chgr)-[:上級]->(cj),
( chgr)-[:勾結(jié)]->(lyd),
( lyd)-[:兄弟]->(lyh),
( lyd)-[:堂兄弟]->(lzh),
( lyh)-[:堂兄弟]->(lzh),
( cyq)-[:上級]->(lf),
( lf)-[:同學]->(cj),
( lf)-[:同事]->(sy),
( lf)-[:朋友]->(chk),
( lshb)-[:老師]->(lf),
( mw)-[:保護]->(lf),
( zhjl)-[:生父]->(lf),
( chk)-[:前任女友]->(sy),
( sy)-[:同學]->(cj),
( lzh)-[:岳父]->(cj),
( lzh)-[:叔侄]->(lshwen),
( lzh)-[:叔侄]->(lshwu),
( lshwen)-[:兄弟]->(lshwu)
說明:
- 前面節(jié)點創(chuàng)建部分每一行都使用
create
關(guān)鍵字。每行之間不添加任何符號辩蛋,相當于多條命令呻畸。而后面關(guān)系創(chuàng)建過程中,使用一個create
關(guān)鍵字悼院,每行之間使用,
隔開书释,相當于一行命令 - 因為關(guān)系的創(chuàng)建使用的是節(jié)點的別名庄新,因此所有的代碼必須一同執(zhí)行裙盾,否則創(chuàng)建關(guān)系的時候會生成默認節(jié)點朱巨,與之前的節(jié)點無關(guān)。
效果展示
-
neo4j瀏覽器界面的展示效果
-
點擊上圖導出按鈕颖医,可以將關(guān)系圖導出為不同格式位衩,下圖導出格式為SVG,使用瀏覽器打開
結(jié)語
萬事開頭難熔萧,一個小小的實現(xiàn)糖驴,便可打開知識的大門,不至于被其他繁瑣的東西令我們望而卻步佛致。筆者剛開始接觸neo4j贮缕,以此記錄學習過程,望與諸君共勉俺榆。