什麼是neo4j,其優點是什麼?有什麼用。
neo4j是一個圖形資料庫,它的優點是:
- 它很容易表示連接配接的資料
- 檢索/周遊/導航更多的連接配接資料是非常容易和快速的
- 它非常容易地表示半結構化資料
- Neo4j CQL查詢語言指令是人性化的可讀格式,非常容易學習
- 它使用簡單而強大的資料模型
- 它不需要複雜的連接配接來檢索連接配接的/相關的資料,因為它很容易檢索它的相鄰節點或關系細節沒有連接配接或索引
neo4j可以很容易在衆多關系中查詢到指定兩者間的關系,并且将其可視化,直覺快速地找到其之間關系的所有内容。
1. 安裝Java
在安裝neo4j之前,需要先确定你的電腦是否已經安裝Java程式,如果沒有,你可以參考這個安裝教程。https://blog.csdn.net/Good_zwn/article/details/87906599
2. neo4j下載下傳
neo4j下載下傳位址: https://neo4j.com/download-center/#releases
選擇community Server, 選擇windows版本。
下載下傳到你指定的路徑去。

3. 解壓檔案
然後解壓檔案到指定的目錄下,我解壓檔案到我的電腦F盤,之後為了友善我辨認,我将它的檔案夾名稱改成neo4j_execise,你也可以寫成其他名字,但是以英文字母命名(不要出現中文)。解壓後的檔案夾neo4j_execise裡面的内容如下圖:
4. 更改檔案設定
因為我們以後可能電腦裡面會存取多個neo4j資料庫,是以這裡我們就不去設定環境變量了,而是改動檔案裡面的一些設定。來達到我們可以開啟neo4j的目的。
下面更改
F:\neo4j_execise\bin\neo4j.ps1
檔案的一些設定:
查找
Import-Module "$PSScriptRoot\Neo4j-Management.psd1
改為:
Import-Module "F:\June28\GREG\bin\Neo4j-Management.psd1
如果你存放的路徑不同,記得在這裡要改變成相應的路徑。
5. 啟動neo4j
快捷鍵
win+ R
,輸入cmd,運作,
進入到指令行界面,切換目錄到
F:\neo4j_execise\bin
,然後輸入
neo4j.bat console
, 或者輸入
neo4j console
也可以運作neo4j。
然後打開浏覽器,輸入網址:
http://localhost:7474/browser/
首次登入界面如下:
預設密碼是·neo4j·,之後更改成你自己的密碼。
之後的界面如下圖:
6. neo4j簡單代碼入門
在指令行輸入的位置輸入:
:play write-code
,或者點選
write code
之後用快捷鍵Ctrl+Enter進行運作,或者點選最右邊的運作指令。
neo4j就會出現一些例子給你選擇學習了。
neo4j使用的是Cypher語言進行操作的,最主要的是CREATE、MATCH、RETURN、where等語句,下面展示的是這幾個的基本用法。
6.1 建立——CREATE
6.1.1 建立節點
建立節點使用
create
指令。
文法格式
CREATE (
<node-name>:<label-name>
{
<Property1-name>:<Property1-Value>
........
<Propertyn-name>:<Propertyn-Value>
}
)
文法說明
建立節點
create(:person{name:'小黃'})
create(:person{name:'老黃'})
create(:person{name:'小黃哥'})
create(:person{name:'小黃姐'})
create(:person{name:'小黃妹'})
create(:person{name:'小黃弟'})
create(:person{name:'小肖'})
create(:person{name:'小黃媽'})
這裡我們圍繞小黃同學的家庭設立節點。
person
是label,
name
是屬性(property)。
小黃
等是屬性值(property key)
6.1.2 建立關系
因為我們已經建立了節點,為了避免節點重複,我們先要找到對應的節點,然後建立關系。
找到對應的節點用的是
MATCH
語句。關于
MATCH
文法請看後面
建立關系
match(n:person{name:'小黃'}),(m:person{name:'小黃哥'})
create (n)-[r:home {relationship:'兄弟'}]->(m)
match(n:person {name:'小黃'}),
(dad:person {name:'老黃'}),
(sister1:person {name:'小黃姐'}),
(sister2:person {name:'小黃妹'}),
(bro:person {name:'小黃弟'}),
(girlfriend:person {name:'小肖'}),
(mam:person {name:'小黃媽'})
create (n)-[:home {relationship:'父母'}]->(mam),
(n)-[:home {relationship:'父母'}]->(dad),
(n)-[:home {relationship:'姐姐'}]->(sister1),
(n)-[:home {relationship:'妹妹'}]->(sister2),
(n)-[:home {relationship:'弟弟'}]->(bro),
(n)-[:friend {relationship:'女朋友'}]->(girlfriend)
6.2 查找——MATCH
6.2.1 MATCH
文法
MATCH
MATCH
(
<node-name>:<label-name>
)
文法說明
6.2.2 查找節點
查找
小黃
MATCH (n:person{name:'小黃'})
RETURN n
查找
小黃
和
小黃哥
MATCH (n:person{name:'小黃'}),(m:person {name:'小黃哥'})
RETURN n,m
6.2.3 查找關系
查找
小黃
和
小肖
的關系
MATCH p = (n:person{name:'小黃'})-[]->(m:person {name:'小肖'})
RETURN p
查找
小黃
和所有人的關系
MATCH p = (n:person{name:'小黃'})-[]->()
RETURN p
6.3 篩選——where
where語句是用來篩選節點或關系的。
6.3.1 篩選節點
查找
小黃
指令1
match (n)
where n.name='小黃'
return n
指令2
match (n:person)
where n.name='小黃'
return n
指令1是周遊所有之後,才根據條件name='小黃’篩選出來的,當節點過多的時候,建議采用指令2去查找,有label這個設定之後,周遊的節點範圍會有所縮小,速度會更快一些,所占用記憶體空間也會減少。
查找
小黃
和
小黃哥
match (n:person)
where n.name='小黃' or n.name='小黃哥'
return n
注意額:我用的是
or
,用
and
就找不到結果咯額。
6.3.2 篩選關系
查找關系是
女朋友
的節點
match p= (n:person)-[r]->(m:person)
where r.relationship='女朋友'
return p