圖數據庫neo4j安裝使用記錄

查看當前系統版本:lsb_release -a

下載neo4j安裝包,速度巨慢:wget -c https://neo4j.com/artifact.php?name=neo4j-community-3.4.14-unix.tar.gz 

解壓縮至/usr/local目錄:tar -zxvf artifact.php\?name\=neo4j-community-3.4.14-unix.tar.gz -C /usr/local

重命名:cd /usr/local     -》     mv neo4j-community-3.4.14*/  neo4j

配置環境變量:vim /etc/profile

     #neo4j

     export NEO4J_HOME=/usr/local/neo4j 

     export PATH=$PATH:$NEO4J_HOME/bin

使立即生效:source /etc/profile

修改conf/neo4j.conf 配置文件54行如下: cd /usr/local/neo4j/conf/      vi neo4j.conf

將改行注釋放出來就可以了

啓動neo4j服務:neo4j start

瀏覽器登錄:192.168.0.105:7474 (此處ip換成實際部署的服務器的ip),初始密碼爲:neo4j,登錄後設置新密碼,最後進入如下界面,可以點擊頁面上的“Start Learning”進行初步的學習 Neo4j。

至此,Neo4j 已經在 Ubuntu 上安裝好了。

----

neo4j圖數據庫的使用:Cypher是圖形數據庫Neo4j的查詢語言,就像SQL在關係數據庫中查詢一樣。

一、Node語法:

在cypher裏面通過用一對小括號()表示一個節點,它在cypher裏面查詢形式如下 :

1、()代表匹配任意一個節點

2、(node1)代表匹配任意一個節點,並給它起了一個別名

3、(:Lable)代表查詢一個類型的數據

4、(person:Lable)代表查詢一個類型的數據,並給它起了一個別名

5、(person:Lable{name:"小王"})查詢某個類型下,節點屬性滿足某個值的數據

6、(person:Lable{name:"小王",age:23})節點的屬性可以同時存在多個,是一個AND的關係

二、關係語法:

關係用一對-組成,關係分爲有方向的進和出,如果是無方向就是進和出都查詢

1、-->指向一個節點

2、-[role]->給關係加個別名

3、-[:acted_in]->訪問某一類關係

4、-[role:acted_in]->訪問某一類關係,並加了別名

5、-[role:acted_in{role:["neo","hadoop"]}]->訪問某一類關係下的某個屬性的關係的數據

三、模式語法

模式語法是節點和關係查詢語法的結合,通過模式語法我們可以進行我們想要的任意負責的查詢

四、模式變量

爲了增加模塊化和減少重複,cypher允許把模式的結果指定在一個變量或者別名中,方便後續使用或操作

path=(:Person)-[:ACTED_IN]->(:Movie)

path是結果集的抽象封裝,有多個函數可以直接從path裏面提取數據如:

nodes(path):提取所有的節點

rels(path):提取所有的關係和relationships(path)相等

length(path):獲取路徑長度

五、條件

match:查詢的主要關鍵詞

create:類似sql裏面的insert

filter , project , sort , page 等

----

一些實際的用法例子:

1、創建

create(:Movie {title:"驢得水",released:2016})  return p;

2、查詢:

match(p:Person) return p; 查詢Person類型的所有數據

match(p:Person{name:"sun"}) return p;查詢名字等於sun的人

match(p1:Person{name:"sun"})-[rel:friend]->(p2) return p2.name,p2.age 查詢sun的朋友的名字和年齡

match(old)..create(new) create(old)-[rel:dr]->(new) return new 對已經存在的節點和新建的節點建立關係

3、查詢或更新

merge語法可以對已經存在的節點不做改變,對改變的部分會合並

MERGE (m:Movie{title:"Cloud Atlas"})

ON CREATE SET m.released = 2012

RTRUEN m

merge....on create set ... return 語法支持合併更新

4、篩選過濾

cypher過濾也是用的和SQL一樣的關鍵詞where

match(p1:Person) where p1.name = "sun" return p1;

等同於下面的

match(p1:Person{name:"sun"}) return p1

where條件裏面支持and , or , xor ,not 等boolean運算符,在json串裏面都是and,同事where裏面還支持正則查詢

5、結果集返回

MATCH (p:Person)

RETURN p,p.name as name,upper(p.name),coalesce(p.nickname,"n/a") AS nickname,

{name:p.name,label:head (labels(p))} AS person

結果集返回做去重    match(n) return distince n.name;

待續:https://blog.csdn.net/u010454030/article/details/53131229

--使用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章