Neo4j學習——基本操作(一)


由於開始學習知識圖譜,因此需要涉及到neo4j的使用
一、介紹
neo4j是一個圖形數據庫基於Java開發而成,因此需要配置jvm才可以運行
配置請參考我前面的一篇blog:https://www.cnblogs.com/future-dream/p/9533757.html

二、基本操作
1、添加
(1)節點的添加

關鍵字:create;n是一個對象,用什么都可以,它的可以就是標簽;節點信息(采用字典的格式):包括name、skill、master等等信息,這些key最后會作為property(屬性)出現在property keys的內容中。

create (n:華山{name:"令狐沖", skill:"易筋經", master:"岳不群"})

結果:
1)創建一個節點


2)創建多個節點


(2)關系的添加

首先是獲取兩個關系對象,比如在添加"岳不群"和"令狐沖"的關系的時候,先建立兩個對象,找出這兩個點
在通過對象指明的標簽,根據具體的屬性值來查找出兩個節點信息,最后用create (a) - [r:師徒] ->(b);來創建關系(注:關系有方向)

match (a:華山), (b:華山) where a.name = "岳不群" and b.name = "令狐沖" create (a)-[r:師徒]->(b);

結果:


(3)屬性的增加
首先確定節點的位置, 然后使用set函數來增加和修改屬性,如果屬性存在就修改,如果屬性不存在則添加

match (e:明教) set e.position = "master";

結果:
1)增加屬性


2)修改屬性


(4)跨標簽建立關系
建立兩個對象,然后建立的同時限定對象,最后用 create (object) - [r:relationship] -> (object),完成跨標簽關系的建立

match (n:華山{name:"令狐沖"}), (m:衡山{name:"莫大"}) create (n) - [r:朋友] -> (m);

結果:

 

2、查找

(1)單節點查詢
首先建立查找對象然后通過標識找出對應的節點

match (e:華山) where e.name = "令狐沖" return e

結果:

 

(2)整個label查詢
與前面的操作一樣,首先要建立一個對象(e)后面接標簽確定要查找的節點信息,最后返回信息

match (e:華山) return e;

結果:

 
(3)關系查詢
1)整體關系查詢
查找所有師徒關系的節點,並返回結果。p1,p2依舊是對象,同時用一個R來接收這些信息。

match R = (p1:華山) - [r:師徒] ->(p2) return R;

結果:


2)單個關系查詢
加入p1和p2的限定條件就可以完成單個數據查詢(注:由於關系是有方向的因此不可以交換否則數據查找會出現none)

match R = (p1:華山) - [r:師徒] ->(p2) where p1.name="岳不群" and p2.name="令狐沖" return R;

結果:

正確結果


空值結果

 
3、刪除
先匹配后進行刪除操作(注:必須先刪除關系,后刪除節點,否則無法刪除節點)
(1)關系刪除
delete r,n就可以將數據和關系全部刪除,選擇帶關系的就全部刪除關系,選擇帶節點就全部刪除節點

MATCH (n:令狐沖) - [r:朋友] -> (m:莫大) delete r;

結果:


(2)節點刪除

MATCH (n:武當) delete n; 

 結果:

 
(3)屬性標簽刪除
建立對象然后進行條件限定,在刪除屬性

MATCH (n:衡山{name:"莫大"}) remove n.id;

結果:

 



4、修改
如上建立一個華山的對象,用set函數來完成屬性值的修改(注:限定條件,否則數據全部修改,導致錯誤)

MATCH (e:華山{name:"令狐沖"}) set e.skill = "吸星大法"

結果:

 
三、總結
通過上訴介紹了關於neo4j的基本操作,因此可以通過Python來完成連接。
(1)寫一個易於理解的公式:
match (object:label{}), (object:label{})  set/create object.attribute = "content";
先進行匹配隨便建一個對象object接收label里面的內容,{}里面加入限定條件,在逗號之后可以多次創建,一般是用來創建關系才會使用,再接方法。

(2)建立關系的方法:
create (object) - [r:relationship] -> (object)
由於前面我們已經建立了兩個對象,因此直接使用就可以了,其中的r也是任意的,它是關系對象的標識。

(3)限制條件的方法:
where object.attribute = "content"

前面的對象加上對相應的屬性,在設置content就可以了。
其中除了attribute和content需要引號處理,其他的可以用中文。

四、參考
參考文檔:http://neo4j.com.cn/public/cypher/neo4j_cql_remove.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM