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è)計屬性值和給節(jié)點(diǎn)添加標(biāo)簽搓逾,REMOVE移除
MERGE:匹配已存在的或者創(chuàng)建新節(jié)點(diǎn)和模式
一卷谈、節(jié)點(diǎn)語法
cypher采用圓括號表示節(jié)點(diǎn),常見表示方法如下:
()
(matrix)
(:Movie)
(matrix:Movie)
(matrix:Movie {title:'Kungfo'})
(matrix:MOvie {title:'Kungfo', released:1980})
簡單的()表示匿名節(jié)點(diǎn)霞篡,引用可添加變量名世蔗,如(matrix)。Movie標(biāo)簽聲明了節(jié)點(diǎn)類型朗兵,Neo4j節(jié)點(diǎn)索引也會使用到標(biāo)簽污淋,每個索引都是建立在一個標(biāo)簽和屬性的組合上。節(jié)點(diǎn)屬性以key/value列表形式存在矛市,并外加一對大括號芙沥,屬性可以存儲信息和限制模式诲祸。
二浊吏、關(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ù)據(jù)過濾時愉棱,必須使用with將兩個讀語句連接在一起,第一部分做聚合哲戚,第二部分過濾一的結(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、返回數(shù)據(jù)
RETURN 有三個子語句顺少, SKIP朋其、LIMIT、ORDER BY
事務(wù)
1祈纯、唯一性
當(dāng)進(jìn)行模式匹配時令宿,Neo4j確保單個模式中,不會包含匹配到多次的同一個圖關(guān)系腕窥。
MATCH (user:User {name:'Adam'}) - [r1:FRIEND] - () - [r2:FRIEND] - (friend2friend)
RETURN friend2friend.name AS f2fName
如需返回該用戶粒没,使用多個MATCH語句實現(xiàn):
MATCH (user:User {name:'Adam'}) - [r1:FRIEND] - (friend)
MATCH (friend) - [r2:FRIEND] - (friend2friend)
RETURN friend2friend.name AS f2fName