neo4j初學

Neo4j 使用cypher語言進行操作

Cypher語言是在學習Neo4j時用到數據庫操作語言(DML),涵蓋對圖數據的增刪改查

neo4j數據庫簡單除暴理解的概念:

Neo4j中不存在表的概念,只有兩類:節點(Node)和關聯(Relation),可以簡單理解爲圖裏面的點和邊。
在數據查詢中,節點一般用小括號(),關聯用中括號[]。
當然也隱含路徑的概念,是用節點和關聯表示的,如:(a)-[r]->(b),表示一條從節點a經關聯r到節點b的路徑。

備份Neo4j的數據:

1)停掉數據庫.
2)備份D:\Neo4J\neo4j-enterprise-1.9.1\data目錄下graph.db目錄中的所有內容.
3)在服務器上拷貝graph.db目錄中的內容到新的服務器的相同目錄中,啓動即可.

Cypher的基本操作

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即代表關聯,它也可以有標籤

3)查詢關鍵字

    match:用來匹配一定模式,可以是簡單的節點、關聯,也可以是複雜的路徑
    where:用來限定條件,一般是限定match中的出現變量的屬性
    return:返回結果
    start:開始節點,一般用於有索引的節點或者關聯



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

複製代碼

a.創建

CREATE (id:label {key:value})
id: 爲節點添加一個唯一ID,不設置則系統自動設置一個,不設置時是 CREATE (:label…
label: 標籤,生命節點類型
{}: 屬性定義,key/value格式

b.關係

-[role:label {roles: [“Neo”]}]->
– 表示一個無指向的關係
–> 表示一個有指向的關係
[] 能夠添加ID,屬性,類型等信息

另看:http://blog.csdn.net/wangweislk/article/details/47661863

複製代碼

按id查詢(這裏的id是系統自動創建的):
start n=node(20) return m;

查詢所有節點:
start n=node(*) return n;
查詢屬性,關係:
start n=node(9) return n,n.name,n.ID,n.level; //查看指定節點,返回需要的屬性

start n=node(*) match (n)-[r:SubClassOf]->m return m,n,n.name,n.ID,r; //查找指定關係

按關係查詢多個節點:
start a = node(14) match b-[r]<->a return r,b;

start a = node(0) match c-[:KNOWS]->b-[:KNOWS]->a return a,b,c; //查找兩層KNOWS關係的節點

start a = node(21) match b-[*]->a return a,b; //查找所有與a節點有關係的節點

使用Where條件進行查詢:(不用建立Index也可以使用)
start n=node(*) where n.name=”Activity” return n;
並且可以使用特定符號:
start n=node() where n.ID?=”A” return n;
start n=node(*) where HAS(n.type) return n,n.name,n.ID,n.type; //如果存在屬性type,並且以A開頭,就輸出節點。

配置文件自動建立索引:
修改conf目錄下的neo4j.properties文件內容如下,重啓Neo4J,對重啓後新建的Node生效。

Enable auto-indexing for nodes, default is false

node_auto_indexing=true

The node property keys to be auto-indexed, if enabled

node_keys_indexable=name,ID

Enable auto-indexing for relationships, default is false

relationship_auto_indexing=true

The relationship property keys to be auto-indexed, if enabled

relationship_keys_indexable=KNOWS,SubClassOf

建立索引後可以用node_auto_index按屬性值查詢:
start n=node:node_auto_index(name=”C”) return n,n.name;

修改屬性值:
start a = node(*) where a.name=”a” set a.name=”A” return a,a.name ;
start n=node(0) set n.name=”Root”,n.ID=”001” ; //給默認的根節點添加name,ID屬性,便於查詢。

刪除:
刪除所有節點和關係:
START n=node(*)
match n-[r]-()
delete n,r;

刪除所有節點以上方法過時,後面版本將被遺棄-推薦使用如下方法
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

複製代碼

圖形數據庫關係

  一 概念

節點:

(a) //actors
(m) //movies
( ) //some anonymous nod

關係:

-[r]-> //a relationship referred to as “r”
(a)-[r]->(m) //actors having a relationship referred to as “r” to movies
-[:ACTED_IN]-> //the relationship type is ACTED_IN
(a)-[:ACTED_IN]->(m) //actors that ACTED_IN some movie
(d)-[:DIRECTED]->(m) //directors that DIRECTED some movie

屬性:

(m {title:”The Matrix”}) //Movie with a title property
(a {name:”Keanu Reeves”,born:1964}) //Actor with name and born property
(a)-[:ACTED_IN {roles:[“Neo”]}]->(m) //Relationship ACTED_IN with roles property (an array of character names)

標籤:

(a:Person) //a Person
(a:Person {name:”Keanu Reeves”}) //a Person with properties
(a:Person)-[:ACTED_IN]->(m:Movie) //a Person that ACTED_IN some movie

二 neo4j使用的查詢語言 cypher

http://www.uml.org.cn/sjjm/201203063.asp

查詢語言包含

START:在圖中的開始點,通過元素的ID或所以查找獲得。
MATCH:圖形的匹配模式,束縛於開始點。
WHERE:過濾條件。
RETURN:返回所需要的。

分享網站:http://www.cnblogs.com/rongyux/p/5537028.html

知識只有共享才能傳播,才能推崇出新的知識,才能學到更多,這裏寫的每一篇文字/博客,基本都是從網上查詢了一下資料然後記錄下來,也有些是原滋原味搬了過來,也有時加了一些自己的想法

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