Neo4j-Cypher

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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容