一、簡介
10年積累的網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有保定免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
Cypher語言是在學(xué)習(xí)Neo4j時用到數(shù)據(jù)庫操作語言(DML),涵蓋對圖數(shù)據(jù)的增刪改查,跟SQL有較大不同,本文僅記錄一些要點備查
二、詳述
1、基本概念
Neo4j中不存在表的概念,只有兩類:節(jié)點(Node)和關(guān)聯(lián)(Relation),可以簡單理解為圖里面的點和邊,在數(shù)據(jù)查詢中,節(jié)點一般用小括號(),關(guān)聯(lián)用中括號[]。當(dāng)然也隱含路徑的概念,是用節(jié)點和關(guān)聯(lián)表示的,如:(a)-[r]->(b),表示一條從節(jié)點a經(jīng)關(guān)聯(lián)r到節(jié)點b的路徑
2、創(chuàng)建語句
1)創(chuàng)建節(jié)點
create (a) 創(chuàng)建空節(jié)點
create (a:Person) 創(chuàng)建標(biāo)簽(可以理解為類)為Person的節(jié)點
create (a:Person {name:'Kaine',age:28}) 創(chuàng)建標(biāo)簽為Person,屬性name值為Kaine,屬性age值為28的節(jié)點
2)創(chuàng)建關(guān)聯(lián)
match (a),(b)
where a.name='Kaine' and b.name='Sharon'
create (a)-[r]->(b)
創(chuàng)建a節(jié)點和b節(jié)點的路徑,此時變量r即代表關(guān)聯(lián),它也可以有標(biāo)簽
2、查詢關(guān)鍵字
match:用來匹配一定模式,可以是簡單的節(jié)點、關(guān)聯(lián),也可以是復(fù)雜的路徑
where:用來限定條件,一般是限定match中的出現(xiàn)變量的屬性
return:返回結(jié)果
start:開始節(jié)點,一般用于有索引的節(jié)點或者關(guān)聯(lián)
3、基本查詢樣式
match ... where ... return ...
如果match有多個對象,用逗號隔開;
如果where有多個條件,用and連接;
如果return有多個變量,用逗號隔開
4、查詢舉例
match (n) return n 查詢所有節(jié)點及關(guān)聯(lián)
match (a)-[r]->(b) where a.name='Kaine' return a,b 查詢屬性name的值是Kaine的節(jié)點,及其所有關(guān)聯(lián)節(jié)點
match (a)-[*1..3]->(b) where a.name='Kaine' return a,b 查詢屬性name值是Kaine的節(jié)點,及其所有距離為1到3的關(guān)聯(lián)節(jié)點,
match (a)-[*2]->(b) where a.name='Kaine' and not (a)-[*1]->(b) return a,b 查詢屬性name的值是Kaine的節(jié)點,及其所有距離為2并且去除距離為1的節(jié)點。(在計算好友的好友時會用到,即如果a、b、c三個人都認(rèn)識,如果僅計算跟a距離為2的人的時候會把b、c也算上,因為a->b->c,或者a->c->b都是通路)
注:關(guān)聯(lián)的中括號內(nèi)數(shù)字的含義
n 距離為n
..n 最大距離為n
n.. 最小距離為n
m..n 距離在m到n之間