一、簡介
Cypher語言是在學習Neo4j時用到數據庫操作語言(DML),涵蓋對圖數據的增刪改查,跟SQL有較大不同,本文僅記錄一些要點備查
二、詳述
1、基本概念
Neo4j中不存在表的概念,只有兩類:節點(Node)和關聯(Relation),可以簡單理解為圖里面的點和邊,在數據查詢中,節點一般用小括號(),關聯用中括號[]。當然也隱含路徑的概念,是用節點和關聯表示的,如:(a)-[r]->(b),表示一條從節點a經關聯r到節點b的路徑
2、創建語句
1)創建節點
create (a) 創建空節點
create (a:Person) 創建標簽(可以理解為類)為Person的節點
create (a:Person {name:'Kaine',age:28}) 創建標簽為Person,屬性name值為Kaine,屬性age值為28的節點
2)創建關聯
match (a),(b)
where a.name='Kaine' and b.name='Sharon'
create (a)-[r]->(b)
創建a節點和b節點的路徑,此時變量r即代表關聯,它也可以有標簽
2、查詢關鍵字
match:用來匹配一定模式,可以是簡單的節點、關聯,也可以是復雜的路徑
where:用來限定條件,一般是限定match中的出現變量的屬性
return:返回結果
start:開始節點,一般用于有索引的節點或者關聯
3、基本查詢樣式
match ... where ... return ...
如果match有多個對象,用逗號隔開;
如果where有多個條件,用and連接;
如果return有多個變量,用逗號隔開
4、查詢舉例
match (n) return n 查詢所有節點及關聯
match (a)-[r]->(b) where a.name='Kaine' return a,b 查詢屬性name的值是Kaine的節點,及其所有關聯節點
match (a)-[*1..3]->(b) where a.name='Kaine' return a,b 查詢屬性name值是Kaine的節點,及其所有距離為1到3的關聯節點,
match (a)-[*2]->(b) where a.name='Kaine' and not (a)-[*1]->(b) return a,b 查詢屬性name的值是Kaine的節點,及其所有距離為2并且去除距離為1的節點。(在計算好友的好友時會用到,即如果a、b、c三個人都認識,如果僅計算跟a距離為2的人的時候會把b、c也算上,因為a->b->c,或者a->c->b都是通路)
注:關聯的中括號內數字的含義
n 距離為n
..n 最大距離為n
n.. 最小距離為n
m..n 距離在m到n之間
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。