Cyper是什么
Cyper是一種聲明式圖數(shù)據(jù)查詢語言
1、獲取圖語句
MATCH:匹配圖模式
WHERE:MATCH、OPTIONAL MATCH、WITH 的一部分,用于添加約束、過濾傳遞給WITH的中間結(jié)果
RETURN:返回結(jié)果
2、更新圖語句
CREATE/DELETE:創(chuàng)建/刪除節(jié)點(diǎn)
SET/REMOVE: SET 設(shè)計(jì)屬性值和給節(jié)點(diǎn)添加標(biāo)簽,REMOVE移除
MERGE:匹配已存在的或者創(chuàng)建新節(jié)點(diǎn)和模式
一、節(jié)點(diǎn)語法
cypher采用圓括號(hào)表示節(jié)點(diǎn),常見表示方法如下:
()
(matrix)
(:Movie)
(matrix:Movie)
(matrix:Movie {title:'Kungfo'})
(matrix:MOvie {title:'Kungfo', released:1980})
簡(jiǎn)單的()表示匿名節(jié)點(diǎn),引用可添加變量名,如(matrix)。Movie標(biāo)簽聲明了節(jié)點(diǎn)類型,Neo4j節(jié)點(diǎn)索引也會(huì)使用到標(biāo)簽,每個(gè)索引都是建立在一個(gè)標(biāo)簽和屬性的組合上。節(jié)點(diǎn)屬性以key/value列表形式存在,并外加一對(duì)大括號(hào),屬性可以存儲(chǔ)信息和限制模式。
二、關(guān)系語法
-->
-[role]->
-[:acted_in]->
-[role:acted_in]->
-[role:acted_in {roles:['zhouxingchi']}]->
-表示無方向的關(guān)系,->表示有方向的關(guān)系,[]用于添加詳情,里面可以包含變量、屬性和類型信息。
三、模式語法
將節(jié)點(diǎn)和關(guān)系的語法組合在一起可以表達(dá)模式。
(xingye:Person:Actor {name:'zhouxingchi'})-[role:atced_in {roles:['Neo']}]
->(matrix:Movie {title:'Kungfo'})
五、模式變量
將模式賦給變量
acted_in = (:Person)-[acted_in]->(:Movie)
查詢和跟新圖
1、更新語句的結(jié)構(gòu)
Cypher查詢部分不能同時(shí)匹配和更新。
如果查詢只讀取,采用惰性加載,返回時(shí)才實(shí)際匹配;更新時(shí),讀取操作必須在寫之前完成。
使用聚合數(shù)據(jù)過濾時(shí),必須使用with將兩個(gè)讀語句連接在一起,第一部分做聚合,第二部分過濾一的結(jié)果。
MATCH (n {name:'zhouxingchi'})-[:FRIEND]-(friend)
WITH n, count(friend) AS friendCount
WHERE friendCount > 3
RETURN n, friendCount
下面將數(shù)據(jù)更新到圖中:
MATCH (n {name:'zhouxingchi'})-[:FRIEND]-(friend)
WITH n, count(friend) AS friendCount
SET n.friendCount = friendCount
RETURN n, friendCOunt
2、返回?cái)?shù)據(jù)
RETURN 有三個(gè)子語句, SKIP、LIMIT、ORDER BY
事務(wù)
1、唯一性
當(dāng)進(jìn)行模式匹配時(shí),Neo4j確保單個(gè)模式中,不會(huì)包含匹配到多次的同一個(gè)圖關(guān)系。
MATCH (user:User {name:'Adam'}) - [r1:FRIEND] - () - [r2:FRIEND] - (friend2friend)
RETURN friend2friend.name AS f2fName
如需返回該用戶,使用多個(gè)MATCH語句實(shí)現(xiàn):
MATCH (user:User {name:'Adam'}) - [r1:FRIEND] - (friend)
MATCH (friend) - [r2:FRIEND] - (friend2friend)
RETURN friend2friend.name AS f2fName