Cypher語言學習筆記

一、簡介


    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之間


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