官术网_书友最值得收藏!

  • 精通Neo4j
  • 龐國明等
  • 753字
  • 2023-07-17 19:00:59

3.1 Cypher概述

3.1.1 Cypher是什么

Cypher是一種聲明式圖數據庫查詢語言,它具有豐富的表現力,能高效地查詢和更新圖數據。對于初學者來說,Cypher使用相對簡單,但其功能還是非常強大,即便是非常復雜的數據庫查詢也能用Cypher簡要地表達出來。這使得用戶可以將精力集中在自己所從事的領域,而不用在數據庫訪問上花太多時間。

Cypher查詢語言設計非常人性化,既適合開發人員,也適合專業的運營人員(這點尤為重要)。作為一種聲明式查詢語言,Cypher專注于清晰地表達從圖中檢索什么,而不是怎么去檢索。在這一點上,它與命令式的Java語言和腳本式的Gremlin(1)語言完全不同。

Cypher博采眾長,同時也繼承了已有的慣用做法。像WHERE和ORDER BY等大多數關鍵詞均來自于SQL語言(2)。而像模式匹配表達方法借鑒于SPARQL語言(3),部分聚合(Collection)語法來源于Haskell和Python語言。

Cypher借鑒了SQL語言的結構——查詢可由各種各樣的語句組合。語句被鏈接在一起,相互之間傳遞中間結果集。查詢語言由多種不同的語句構成,這里是一些獲取圖的常用語句:

● MATCH:匹配圖模式。這是從圖中獲取數據最常見的方法。

● WHERE:不是獨立的語句,而是MATCH、OPTINAL MATCH和WITH的一部分。用于給模式添加約束或者過濾傳遞給WITH的中間結果。

● RETURN:定義返回的結果。

下面是MATCH和RETURN的例子。示例中的圖數據如圖3-1所示。

圖3-1 示例中的圖數據

例如,下面是查找名為John和John朋友的朋友的查詢語句。

結果:

提示:本章中這種框線輸出格式是通過neo4j-shell得到的,有關neo4j-shell的使用請參見“第2章 Neo4j基礎入門”。

接下來在語句中添加一些過濾。

給定一個用戶名列表,找到名字在列表中的所有節點。匹配他們的朋友,僅返回那些他們關注的name屬性以'S'開頭的用戶。

結果:

下面是一些用于更新圖常用的語句:

● CREATE(和DELETE):創建(和刪除)節點和關系。

● SET(和REMOVE):使用SET設置屬性值和給節點添加標簽,使用REMOVE移除它們。

● MERGE:匹配已經存在的或者創建新節點和模式,這對于有唯一性約束的情況非常有用。

主站蜘蛛池模板: 万年县| SHOW| 洪洞县| 雅安市| 长汀县| 阿勒泰市| 巴南区| 宜兴市| 河北省| 丰城市| 綦江县| 台南县| 双辽市| 呼玛县| 犍为县| 西吉县| 大埔区| 台安县| 玉屏| 新巴尔虎左旗| 凌云县| 得荣县| 中卫市| 凤山市| 晋州市| 中江县| 镇平县| 二连浩特市| 旅游| 峨眉山市| 霍山县| 喀什市| 尖扎县| 科技| 晴隆县| 汝南县| 滦南县| 松潘县| 湘阴县| 太仆寺旗| 楚雄市|