国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Neo4J 特性CQL語句,函數(shù),Springboot集成

這篇具有很好參考價值的文章主要介紹了Neo4J 特性CQL語句,函數(shù),Springboot集成。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Neo4J

一、Neo4J相關介紹

1.為什么需要圖數(shù)據(jù)庫

??隨著社交、電商、金融、零售、物聯(lián)網(wǎng)等行業(yè)的快速發(fā)展,現(xiàn)實社會織起了了一張龐大而復雜的關系
網(wǎng),傳統(tǒng)數(shù)據(jù)庫很難處理關系運算。大數(shù)據(jù)行業(yè)需要處理的數(shù)據(jù)之間的關系隨數(shù)據(jù)量呈幾何級數(shù)增長,
急需一種支持海量復雜數(shù)據(jù)關系運算的數(shù)據(jù)庫,圖數(shù)據(jù)庫應運而生。
世界上很多著名的公司都在使用圖數(shù)據(jù)庫,比如:

  • 社交領域:Facebook, Twitter,Linkedin用它來管理社交關系,實現(xiàn)好友推薦
  • 零售領域:eBay,沃爾瑪使用它實現(xiàn)商品實時推薦,給買家更好的購物體驗
  • 金融領域:摩根大通,花旗和瑞銀等銀行在用圖數(shù)據(jù)庫做風控處理
  • 汽車制造領域:沃爾沃,戴姆勒和豐田等頂級汽車制造商依靠圖數(shù)據(jù)庫推動創(chuàng)新制造解決方案
  • 電信領域:Verizon, Orange和AT&T 等電信公司依靠圖數(shù)據(jù)庫來管理網(wǎng)絡,控制訪問并支持客戶
    360
  • 酒店領域:萬豪和雅高酒店等頂級酒店公司依使用圖數(shù)據(jù)庫來管理復雜且快速變化的庫存
    圖數(shù)據(jù)庫并非指存儲圖片的數(shù)據(jù)庫,而是以圖數(shù)據(jù)結構存儲和查詢數(shù)據(jù)。

??圖數(shù)據(jù)庫是基于圖論實現(xiàn)的一種NoSQL數(shù)據(jù)庫,其數(shù)據(jù)存儲結構和數(shù)據(jù)查詢方式都是以圖論為基礎的,
圖數(shù)據(jù)庫主要用于存儲更多的連接數(shù)據(jù).

??圖論〔Graph Theory〕是數(shù)學的一個分支。它以圖為研究對象圖論中的圖是由若干給定的點及連
接兩點的線所構成的圖形,這種圖形通常用來描述某些事物之間的某種特定關系,用點代表事物,
用連接兩點的線表示相應兩個事物間具有這種關系。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

方案1:Google+

??使用 Google+(GooglePlus)應用程序來了解現(xiàn)實世界中 Graph 數(shù)據(jù)庫的需求。 觀察下面的圖表。

在這里,我們用圓圈表示了 Google+應用個人資料。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

在上圖中,輪廓“A”具有圓圈以連接到其他輪廓:家庭圈(B,C,D)和朋友圈(B,C)。

再次,如果我們打開配置文件“B”,我們可以觀察以下連接的數(shù)據(jù)。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

??像這樣,這些應用程序包含大量的結構化,半結構化和非結構化的連接數(shù)據(jù)。 在 RDBMS 數(shù)據(jù)庫中表示這種非結構化連接數(shù)據(jù)并不容易。

??如果我們在 RDBMS 數(shù)據(jù)庫中存儲這種更多連接的數(shù)據(jù),那么檢索或遍歷是非常困難和緩慢的。

??所以要表示或存儲這種更連接的數(shù)據(jù),我們應該選擇一個流行的圖數(shù)據(jù)庫。

??圖形DBMS非常容易地存儲這種更多連接的數(shù)據(jù)。 它將每個配置文件數(shù)據(jù)作為節(jié)點存儲在內部,它與相鄰節(jié)點連接的節(jié)點,它們通過關系相互連接。

??他們存儲這種連接的數(shù)據(jù)與上面的圖表中的相同,這樣檢索或遍歷是非常容易和更快的。

方案2:Facebook

??利用 Facebook 應用程序了解現(xiàn)實世界中 Graph 數(shù)據(jù)庫的需求。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

??在上面的圖中,F(xiàn)acebook Profile“A”已經(jīng)連接到他的朋友,喜歡他的一些朋友,發(fā)送消息給他的一些朋友,跟隨他喜歡的一些名人。

??這意味著大量的連接數(shù)據(jù)配置文件A.如果我們打開其他配置文件,如配置文件B,我們將看到類似的大量的連接數(shù)據(jù)。

注- 通過觀察上述兩個應用程序,它們有很多更多的連接數(shù)據(jù)。 它是非常容易存儲和檢索,這種更連接的數(shù)據(jù)與圖形數(shù)據(jù)庫。

2.特性和優(yōu)勢

??關系查詢性能對比 在數(shù)據(jù)關系中心,圖形數(shù)據(jù)庫在查詢速度方面非常高效,即使對于深度和復雜的查詢
也是如此。在關系型數(shù)據(jù)庫和圖數(shù)據(jù)庫(Neo4j)之間進行了實驗:在一個社交網(wǎng)絡里找到最大深度為5的
朋友的朋友,他們的數(shù)據(jù)集包括100萬人,每人約有50個朋友。
實驗結果如下:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

對比關系型數(shù)據(jù)庫

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

各種NOSQL對比

分類 數(shù)據(jù)模型 優(yōu)勢 劣勢 舉例
鍵值對數(shù)據(jù)庫 哈希表 查找速度快 數(shù)據(jù)無結構化,通常只被當作字符串或者二進制數(shù)據(jù) Redis
列存儲數(shù)據(jù)庫 列式數(shù)據(jù)存儲 查找速度快;支持分布橫向擴展;數(shù)據(jù)壓縮率高 功能相對受限 HBase
文檔型數(shù)據(jù)庫 鍵值對擴展 數(shù)據(jù)結構要求不嚴格;表結構可變;不需要預先定義表結構 查詢性能不高,缺乏統(tǒng)一的查詢語法 MongoDB
圖數(shù)據(jù)庫 節(jié)點和關系組成的圖 利用圖結構相關算法(最短路徑、節(jié)點度關系查找等) 可能需要對整個圖做計算,不利于圖數(shù)據(jù)分布存儲 Neo4j

3.什么是Neo4j

??Neo4j是一個開源的NoSQL圖形數(shù)據(jù)庫,2003 年開始開發(fā),使用 scala和java 語言,2007年開始發(fā)布。

  • 是世界上最先進的圖數(shù)據(jù)庫之一,提供原生的圖數(shù)據(jù)存儲,檢索和處理;
  • 采用屬性圖模型(Property graph model),極大的完善和豐富圖數(shù)據(jù)模型;
  • 專屬查詢語言 Cypher,直觀,高效;

官網(wǎng): https://neo4j.com/
Neo4j的特性:

  • SQL就像簡單的查詢語言Neo4j CQL
  • 它遵循屬性圖數(shù)據(jù)模型
  • 它通過使用Apache Lucence支持索引
  • 它支持UNIQUE約束
  • 它包含一個用于執(zhí)行CQL命令的UI:Neo4j數(shù)據(jù)瀏覽器
  • 它支持完整的ACID(原子性,一致性,隔離性和持久性)規(guī)則
  • 它采用原生圖形庫與本地GPE(圖形處理引擎)
  • 它支持查詢的數(shù)據(jù)導出到JSON和XLS格式
  • 它提供了REST API,可以被任何編程語言(如Java,Spring,Scala等)訪問
  • 它提供了可以通過任何UI MVC框架(如Node JS)訪問的Java腳本
  • 它支持兩種Java API:Cypher API和Native Java API來開發(fā)Java應用程序

Neo4j的優(yōu)點:

  • 它很容易表示連接的數(shù)據(jù)
  • 檢索/遍歷/導航更多的連接數(shù)據(jù)是非常容易和快速的
  • 它非常容易地表示半結構化數(shù)據(jù)
  • Neo4j CQL查詢語言命令是人性化的可讀格式,非常容易學習
  • 使用簡單而強大的數(shù)據(jù)模型
  • 它不需要復雜的連接來檢索連接的/相關的數(shù)據(jù),因為它很容易檢索它的相鄰節(jié)點或關系細節(jié)沒有
    連接或索引

4.Neo4j數(shù)據(jù)模型

圖論基礎

??圖是一組節(jié)點和連接這些節(jié)點的關系,圖形以屬性的形式將數(shù)據(jù)存儲在節(jié)點和關系中,屬性是用于表示
數(shù)據(jù)的鍵值對。
??在圖論中,我們可以表示一個帶有圓的節(jié)點,節(jié)點之間的關系用一個箭頭標記表示。
最簡單的可能圖是單個節(jié)點:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

我們可以使用節(jié)點表示社交網(wǎng)絡(如Google+(GooglePlus)個人資料),它不包含任何屬性。向
Google+個人資料添加一些屬性:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

在兩個節(jié)點之間創(chuàng)建關系:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

此處在兩個配置文件之間創(chuàng)建關系名稱“跟隨”。 這意味著 Profile-I 遵循 Profile-II。

屬性圖模型

Neo4j圖數(shù)據(jù)庫遵循屬性圖模型來存儲和管理其數(shù)據(jù)。

  • 屬性圖模型規(guī)則
  • 表示節(jié)點,關系和屬性中的數(shù)據(jù)
  • 節(jié)點和關系都包含屬性
  • 關系連接節(jié)點
  • 屬性是鍵值對
  • 節(jié)點用圓圈表示,關系用方向鍵表示。
  • 關系具有方向:單向和雙向。
  • 每個關系包含“開始節(jié)點”或“從節(jié)點”和“到節(jié)點”或“結束節(jié)點”

??在屬性圖數(shù)據(jù)模型中,關系應該是定向的。如果我們嘗試創(chuàng)建沒有方向的關系,那么它將拋出一個錯誤
消息。在Neo4j中,關系也應該是有方向性的。如果我們嘗試創(chuàng)建沒有方向的關系,那么Neo4j會拋出一
個錯誤消息,“關系應該是方向性的”。

??Neo4j圖數(shù)據(jù)庫將其所有數(shù)據(jù)存儲在節(jié)點和關系中,我們不需要任何額外的RDBMS數(shù)據(jù)庫或NoSQL數(shù)據(jù)
庫來存儲Neo4j數(shù)據(jù)庫數(shù)據(jù),它以圖的形式存儲數(shù)據(jù)。Neo4j使用本機GPE(圖形處理引擎)來使用它的
本機圖存儲格式。
圖數(shù)據(jù)庫數(shù)據(jù)模型的主要構建塊是:

  • 節(jié)點
  • 關系
  • 屬性

簡單的屬性圖的例子:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

??這里我們使用圓圈表示節(jié)點。 使用箭頭表示關系,關系是有方向性的。 我們可以用Properties(鍵值
對)來表示Node的數(shù)據(jù)。 在這個例子中,我們在Node的Circle中表示了每個Node的Id屬性。

Neo4j的構建元素

Neo4j圖數(shù)據(jù)庫主要有以下構建元素:

  • 節(jié)點
  • 屬性
  • 關系
  • 標簽
  • 數(shù)據(jù)瀏覽器

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

有一個或多個標簽,用于描述其在圖表中的作用
屬性
??屬性(Property)是用于描述圖節(jié)點和關系的鍵值對。其中Key是一個字符串,值可以通過使用任何

  • Neo4j數(shù)據(jù)類型來表示
  • 屬性是命名值,其中名稱(或鍵)是字符串
  • 屬性可以被索引和約束
  • 可以從多個屬性創(chuàng)建復合索引

關系
??關系(Relationship)同樣是圖數(shù)據(jù)庫的基本元素。當數(shù)據(jù)庫中已經(jīng)存在節(jié)點后,需要將節(jié)點連接起來
構成圖。關系就是用來連接兩個節(jié)點,關系也稱為圖論的邊(Edge) ,其始端和末端都必須是節(jié)點,關系不
能指向空也不能從空發(fā)起。關系和節(jié)點一樣可以包含多個屬性,但關系只能有一個類型(Type) 。
關系連接兩個節(jié)點
關系是方向性的
節(jié)點可以有多個甚至遞歸的關系
關系可以有一個或多個屬性(即存儲為鍵/值對的屬性)

基于方向性,Neo4j關系被分為兩種主要類型:

  • 單向關系
  • 雙向關系

標簽
??標簽(Label)將一個公共名稱與一組節(jié)點或關系相關聯(lián), 節(jié)點或關系可以包含一個或多個標簽。 我們
可以為現(xiàn)有節(jié)點或關系創(chuàng)建新標簽, 我們可以從現(xiàn)有節(jié)點或關系中刪除標簽。
標簽用于將節(jié)點分組
一個節(jié)點可以具有多個標簽
對標簽進行索引以加速在圖中查找節(jié)點
本機標簽索引針對速度進行了優(yōu)化

Neo4j Browser
??一旦我們安裝Neo4j,我們就可以訪問Neo4j數(shù)據(jù)瀏覽器

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

5.軟件安裝

下載地址:https://neo4j.com/download-center/
安裝方式:

  • Neo4j Enterprise Server
  • Neo4j Community Server
  • Neo4j Desktop

下載相關軟件

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

解壓縮即可

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

相關的指令

console: 直接啟動 neo4j 服務器
install-service | uninstall-service | update-service : 安裝/卸載/更新 neo4j 服務
start/stop/restart/status: 啟動/停止/重啟/狀態(tài)
-V 輸出更多信息

進入到bin目錄,執(zhí)行

neo4j console

在瀏覽器中訪問http://localhost:7474
使用用戶名neo4j和默認密碼neo4j進行連接,然后會提示更改密碼。
Neo4j Browser是開發(fā)人員用來探索Neo4j數(shù)據(jù)庫、執(zhí)行Cypher查詢并以表格或圖形形式查看結果的工
具。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

當然也可以通過 Docker 來安裝

拉取鏡像

docker pull neo4j:3.5.22-community

運行鏡像

docker run -d -p 7474:7474 -p 7687:7687 --name neo4j \
-e "NEO4J_AUTH=neo4j/123456" \
-v /usr/local/soft/neo4j/data:/data \
-v /usr/local/soft/neo4j/logs:/logs \
-v /usr/local/soft/neo4j/conf:/var/lib/neo4j/conf \
-v /usr/local/soft/neo4j/import:/var/lib/neo4j/import \
neo4j:3.5.22-community

二、CQL語句

1.CQL簡介

??Neo4j的Cypher語言是為處理圖形數(shù)據(jù)而構建的,CQL代表Cypher查詢語言。像Oracle數(shù)據(jù)庫具有查詢
語言SQL,Neo4j具有CQL作為查詢語言。

  • 它是Neo4j圖形數(shù)據(jù)庫的查詢語言。
  • 它是一種聲明性模式匹配語言
  • 它遵循SQL語法。
  • 它的語法是非常簡單且人性化、可讀的格式。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

2.CREATE 命令

Neo4j使用CQL“CREATE”命令

  • 創(chuàng)建沒有屬性的節(jié)點
  • 使用屬性創(chuàng)建節(jié)點
  • 在沒有屬性的節(jié)點之間創(chuàng)建關系
  • 使用屬性創(chuàng)建節(jié)點之間的關系
  • 為節(jié)點或關系創(chuàng)建單個或多個標簽

語法命令

CREATE (<node-name>:<label-name>)

語法說明

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

注意事項 -

1、Neo4j數(shù)據(jù)庫服務器使用此<node-name>將此節(jié)點詳細信息存儲在Database.As中作為Neo4j DBA或Developer,我們不能使用它來訪問節(jié)點詳細信息。

2、Neo4j數(shù)據(jù)庫服務器創(chuàng)建一個<label-name>作為內部節(jié)點名稱的別名。作為Neo4j DBA或Developer,我們應該使用此標簽名稱來訪問節(jié)點詳細信息。

3.MATCH 命令

Neo4j CQL MATCH 命令用于

  • 從數(shù)據(jù)庫獲取有關節(jié)點和屬性的數(shù)據(jù)
  • 從數(shù)據(jù)庫獲取有關節(jié)點,關系和屬性的數(shù)據(jù)

語法格式:

MATCH 
(
   <node-name>:<label-name>
)

語法說明:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

4.RETURN 子句

Neo4j CQL RETURN子句用于 -

  • 檢索節(jié)點的某些屬性
  • 檢索節(jié)點的所有屬性
  • 檢索節(jié)點和關聯(lián)關系的某些屬性
  • 檢索節(jié)點和關聯(lián)關系的所有屬性

語法結構

RETURN 
   <node-name>.<property1-name>,
   ........
   <node-name>.<propertyn-name>

語法說明:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

5.MATCH和RETURN

在Neo4j CQL中,我們不能單獨使用MATCH或RETURN命令,因此我們應該合并這兩個命令以從數(shù)據(jù)庫檢索數(shù)據(jù)。

Neo4j使用CQL MATCH + RETURN命令 -

  • 檢索節(jié)點的某些屬性
  • 檢索節(jié)點的所有屬性
  • 檢索節(jié)點和關聯(lián)關系的某些屬性
  • 檢索節(jié)點和關聯(lián)關系的所有屬性

語法結構

MATCH Command
RETURN Command

語法說明

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

6.CREATE+MATCH+RETURN命令

先創(chuàng)建一個客戶

create (e:Customer {id:"1001",name:"boge",location:"cs"})

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

創(chuàng)建一個信用卡節(jié)點

create (cc:CreditCard {id:"9999",number:"1234567890",cvv:"888",expiredate:"22/17"})

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

然后我們可以查詢對應的信息

match (k:customer) return k.name,k.location,k.id

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

還可以查詢信用卡的信息

match (m:CreditCard) return m.number,m.cvv,m.id,m.expiredate

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

7.關系基礎

Neo4j圖數(shù)據(jù)庫遵循屬性圖模型來存儲和管理其數(shù)據(jù)。

根據(jù)屬性圖模型,關系應該是定向的。 否則,Neo4j將拋出一個錯誤消息。

基于方向性,Neo4j關系被分為兩種主要類型。

  • 單向關系
  • 雙向關系

在以下場景中,我們可以使用Neo4j CQL CREATE命令來創(chuàng)建兩個節(jié)點之間的關系。 這些情況適用于Uni和雙向關系。

  • 在兩個現(xiàn)有節(jié)點之間創(chuàng)建無屬性的關系
  • 在兩個現(xiàn)有節(jié)點之間創(chuàng)建有屬性的關系
  • 在兩個新節(jié)點之間創(chuàng)建無屬性的關系
  • 在兩個新節(jié)點之間創(chuàng)建有屬性的關系
  • 在具有WHERE子句的兩個退出節(jié)點之間創(chuàng)建/不使用屬性的關系

注意 -

我們將創(chuàng)建客戶和CreditCard之間的關系,如下所示:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

8.CREATE創(chuàng)建標簽

CREATE標簽可以創(chuàng)建單個標簽或者多個標簽

CREATE(node-name:lable-name1:lable-name2)

還有就是可以根據(jù)CREATE語句來創(chuàng)建標簽之間的關系

CREATE (node1-name:lable1-name) - [relationship-name:relationship-lable-name]->(node2-name:lable2-name)

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

案例:

create (p1:Profile1)-[r1:喜歡]->(p2:Profile2)

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

9.WHERE子句

像SQL一樣,Neo4j CQL在CQL MATCH命令中提供了WHERE子句來過濾MATCH查詢的結果。

語法結構

WHERE <condition>

復雜的語法結構

WHERE <condition> <boolean-operator> <condition>

Neo4j支持以下布爾運算符在Neo4j CQL WHERE子句中使用以支持多個條件。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

Neo4j 支持以下的比較運算符,在 Neo4j CQL WHERE 子句中使用來支持條件。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

案例:

match (m:Employee) where m.age > 18 or m.id = 1002  return m

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

多個節(jié)點關聯(lián)查詢

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

where子句也可以創(chuàng)建關系

語法結構

MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>) 
WHERE <condition>
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>
       {<relationship-properties>}]->(<node2-label-name>) 

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

案例

match (c:customer) , (d:CreditCard) where c.id = "1001" and d.id = "9999" create (c)-[r:消費{shopdate:"2022/09/28",price:6000}]->(d) return r

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

10.DELETE命令

Neo4j使用CQL DELETE子句

  • 刪除節(jié)點。
  • 刪除節(jié)點及相關節(jié)點和關系。

對應的語法結構

DELETE <node-name-list>

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

注意 -

我們應該使用逗號(,)運算符來分隔節(jié)點名。

11.REMOVE命令

有時基于我們的客戶端要求,我們需要向現(xiàn)有節(jié)點或關系添加或刪除屬性。

我們使用Neo4j CQL SET子句向現(xiàn)有節(jié)點或關系添加新屬性。

我們使用Neo4j CQL REMOVE子句來刪除節(jié)點或關系的現(xiàn)有屬性。

Neo4j CQL REMOVE命令用于

  • 刪除節(jié)點或關系的標簽
  • 刪除節(jié)點或關系的屬性

Neo4j CQL DELETE和REMOVE命令之間的主要區(qū)別 -

  • DELETE操作用于刪除節(jié)點和關聯(lián)關系。
  • REMOVE操作用于刪除標簽和屬性。

Neo4j CQL DELETE和REMOVE命令之間的相似性 -

  • 這兩個命令不應單獨使用。
  • 兩個命令都應該與MATCH命令一起使用。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

通過remove來移除標簽

match (d:`電影`) remove d:Movie

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

12.SET子句

有時,根據(jù)我們的客戶端要求,我們需要向現(xiàn)有節(jié)點或關系添加新屬性。

要做到這一點,Neo4j CQL 提供了一個SET子句。

Neo4j CQL 已提供 SET 子句來執(zhí)行以下操作。

  • 向現(xiàn)有節(jié)點或關系添加新屬性
  • 添加或更新屬性值

語法結構

SET  <property-name-list>

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

添加屬性:

MATCH (book:Book)
SET book.title = 'superstar'
RETURN book

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

13.ORDER BY排序

Neo4j CQL在MATCH命令中提供了“ORDER BY”子句,對MATCH查詢返回的結果進行排序。

我們可以按升序或降序對行進行排序。

默認情況下,它按升序對行進行排序。 如果我們要按降序對它們進行排序,我們需要使用DESC子句。

語法結構

ORDER BY  <property-name-list>  [DESC]	 

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

舉例:

MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
ORDER BY emp.name

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

14.UNION合并

與SQL一樣,Neo4j CQL有兩個子句,將兩個不同的結果合并成一組結果

  • UNION
  • UNION ALL

UNION子句

它將兩組結果中的公共行組合并返回到一組結果中。 它不從兩個節(jié)點返回重復的行。

限制:

結果列類型和來自兩組結果的名稱必須匹配,這意味著列名稱應該相同,列的數(shù)據(jù)類型應該相同。

語法結構

<MATCH Command1>
   UNION
<MATCH Command2>

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

注意 -

如果這兩個查詢不返回相同的列名和數(shù)據(jù)類型,那么它拋出一個錯誤。

as 來處理不同的前綴

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number,cc.name as name,
   cc.valid_from as valid_from,cc.valid_to as valid_to
UNION
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number,dc.name as name,
   dc.valid_from as valid_from,dc.valid_to as valid_to

UNION ALL子句

它結合并返回兩個結果集的所有行成一個單一的結果集。它還返回由兩個節(jié)點重復行。

限制

結果列類型,并從兩個結果集的名字必須匹配,這意味著列名稱應該是相同的,列的數(shù)據(jù)類型應該是相同的。

union all 語法

<MATCH Command1>
UNION ALL
<MATCH Command2>

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

15.LIMIT和SKIP子句

Neo4j CQL已提供“LIMIT”子句來過濾或限制查詢返回的行數(shù)。 它修剪CQL查詢結果集底部的結果。

如果我們要修整CQL查詢結果集頂部的結果,那么我們應該使用CQL SKIP子句

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

skip跳過

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

skip和limit可以結合使用達到分頁的效果

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

16.合并

Neo4j使用CQL MERGE命令 -

  • 創(chuàng)建節(jié)點,關系和屬性
  • 為從數(shù)據(jù)庫檢索數(shù)據(jù)

MERGE命令是CREATE命令和MATCH命令的組合。

MERGE = CREATE + MATCH

merge語法

MERGE (<node-name>:<label-name>
{
   <Property1-name>:<Pro<rty1-Value>
   .....
   <Propertyn-name>:<Propertyn-Value>
})

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

注意 -

Neo4j CQL MERGE命令語法與CQL CREATE命令類似。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

17.NULL值

Neo4j CQL將空值視為對節(jié)點或關系的屬性的缺失值或未定義值。

當我們創(chuàng)建一個具有現(xiàn)有節(jié)點標簽名稱但未指定其屬性值的節(jié)點時,它將創(chuàng)建一個具有NULL屬性值的新節(jié)點。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

還可以用null 作為查詢的條件

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

18.IN操作符

與SQL一樣,Neo4j CQL提供了一個IN運算符,以便為CQL命令提供值的集合。

IN[<Collection-of-values>]

案例:

MATCH (e:Employee) 
WHERE e.id IN [123,124]
RETURN e.id,e.name,e.sal,e.deptno

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

三、CQL函數(shù)

1.字符串函數(shù)

與SQL一樣,Neo4J CQL提供了一組String函數(shù),用于在CQL查詢中獲取所需的結果。

列舉幾個常用的

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

案例:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

2.AGGEGATION聚合

和SQL一樣,Neo4j CQL提供了一些在RETURN子句中使用的聚合函數(shù)。 它類似于SQL中的GROUP BY子句。

我們可以使用MATCH命令中的RETURN +聚合函數(shù)來處理一組節(jié)點并返回一些聚合值。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

3.關系函數(shù)

Neo4j CQL提供了一組關系函數(shù),以在獲取開始節(jié)點,結束節(jié)點等細節(jié)時知道關系的細節(jié)。

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

案例:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

四、Neo4J和SpringBoot整合

添加對應的依賴

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-neo4j</artifactId>
        </dependency>

然后添加對應的配置文件

# neo4j配置
spring.data.neo4j.uri= bolt://localhost:7687
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=123456


1.Node的操作

然后創(chuàng)建對應的實體對象

@Data
@NodeEntity("Person")
public class Person {

    @Id
    @GeneratedValue
    private Long id;

    @Property("name")
    private String name;
}

@NodeEntity:標明是一個節(jié)點實體

@RelationshipEntity:標明是一個關系實體

@Id:實體主鍵

@Property:實體屬性

@GeneratedValue:實體屬性值自增

@StartNode:開始節(jié)點(可以理解為父節(jié)點)

@EndNode:結束節(jié)點(可以理解為子節(jié)點)

然后創(chuàng)建對應的Repository接口

@Repository
public interface PersonRepository extends Neo4jRepository<Person,Long> {
}

然后我們就可以測試Node的創(chuàng)建了

    @Autowired
    private PersonRepository personRepository;

    @Test
    void contextLoads() {
        Person person = new Person();
        person.setName("波哥");
        personRepository.save(person);
    }

創(chuàng)建成功

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql

2.Node關系的維護

創(chuàng)建關系實體

@Data
@RelationshipEntity(type = "徒弟")
public class PersonRelation implements Serializable {

    @Id
    @GeneratedValue
    private Long id;

    @StartNode
    private Person parent;

    @EndNode
    private Person child;

    @Property
    private String relation;

    public PersonRelation(Person parent, Person child, String relation) {
        this.parent = parent;
        this.child = child;
        this.relation = relation;
    }
}


創(chuàng)建對應的Dao持久層

@Repository
public interface PersonRelationRepository extends Neo4jRepository<PersonRelation,Long> {

}

然后測試

    /**
     * 節(jié)點關系
     */
    @Test
    void nodeRelation(){
        Person p1 = new Person("唐僧",6666);
        Person p2 = new Person("孫悟空",5555);
        Person p3 = new Person("豬八戒",3333);
        Person p4 = new Person("沙僧",2222);
        Person p5 = new Person("白龍馬",1111);

        // 維護 關系
        PersonRelation pr1 = new PersonRelation(p1,p2,"徒弟");
        PersonRelation pr2 = new PersonRelation(p1,p3,"徒弟");
        PersonRelation pr3 = new PersonRelation(p1,p4,"徒弟");
        PersonRelation pr4 = new PersonRelation(p1,p5,"徒弟");

        personRelationRepository.save(pr1);
        personRelationRepository.save(pr2);
        personRelationRepository.save(pr3);
        personRelationRepository.save(pr4);

    }

運行后的效果:

Neo4J 特性CQL語句,函數(shù),Springboot集成,數(shù)據(jù)庫,neo4j,spring boot,后端,cql文章來源地址http://www.zghlxwxcb.cn/news/detail-520010.html

到了這里,關于Neo4J 特性CQL語句,函數(shù),Springboot集成的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Neo4j教程之CQL命令基本使用】

    【Neo4j教程之CQL命令基本使用】

    ?? Neo4j ?? ?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣? ?? 作者簡介:碩風和煒,CSDN-Java領域優(yōu)質創(chuàng)作者??,保研|國家獎學金|高中學習JAVA|大學完善JAVA開發(fā)技術棧|面試刷題|面經(jīng)八股文|經(jīng)驗

    2024年02月11日
    瀏覽(19)
  • 【Springboot集成Neo4j完整版教程】

    【Springboot集成Neo4j完整版教程】

    ?? Neo4j ?? ?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣? ?? 作者簡介:碩風和煒,CSDN-Java領域優(yōu)質創(chuàng)作者??,保研|國家獎學金|高中學習JAVA|大學完善JAVA開發(fā)技術棧|面試刷題|面經(jīng)八股文|經(jīng)驗

    2024年02月10日
    瀏覽(23)
  • 知識圖譜小白入門(1):neo4j的安裝與CQL的使用

    知識圖譜小白入門(1):neo4j的安裝與CQL的使用

    知識圖譜,是一種實體間的信息與關系知識的網(wǎng)狀結構,借用圖論中點與邊的概念進行組建,易于結構化和可視化。 所以,設計者按照圖論相關知識設計Neo4j,Cypher和py2neo的相關語法,均可看到C程序設計相關的身影。 neo4j的有三個版本: Server版本,試用30天,收費版本。 C

    2024年02月07日
    瀏覽(27)
  • Springboot集成neo4j實現(xiàn)知識圖譜關系圖

    Springboot集成neo4j實現(xiàn)知識圖譜關系圖

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 使用neo4j來完成人員關系 公司項目有一個功能需要將各個人員關系列出,在參加評選的時候,進行展示和篩選 neo4j是高性能的NOSQL圖形數(shù)據(jù)庫,在neo4j中,社區(qū)版本只能使用一個database。在neo4j中不存在表的

    2024年02月02日
    瀏覽(19)
  • 圖數(shù)據(jù)庫Neo4j概念、應用場景、安裝及CQL的使用

    圖數(shù)據(jù)庫Neo4j概念、應用場景、安裝及CQL的使用

    引用Seth Godin的說法,企業(yè)需要摒棄僅僅收集數(shù)據(jù)點的做法,開始著手建立數(shù)據(jù)之間的關聯(lián)關系。 數(shù)據(jù)點之間的關系 甚至比單個點本身更為重要。 傳統(tǒng)的**關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)**并不擅長處理數(shù)據(jù)之間的關系,那些表狀數(shù)據(jù)模式和呆板的結構難以添加新連接或不同類型連

    2024年02月06日
    瀏覽(22)
  • 圖數(shù)據(jù)庫_Neo4j學習cypher語言_使用CQL命令002_刪除節(jié)點_刪除屬性_結果排序Order By---Neo4j圖數(shù)據(jù)庫工作筆記0006

    圖數(shù)據(jù)庫_Neo4j學習cypher語言_使用CQL命令002_刪除節(jié)點_刪除屬性_結果排序Order By---Neo4j圖數(shù)據(jù)庫工作筆記0006

    然后我們再來看如何刪除節(jié)點 ? 可以看到首先 ? 我們這里 ? 比如我要刪除張三 可以看到 match (n:student) where n.name = \\\"張三\\\" delete n 這樣就是刪除了student集合中,name是張三的節(jié)點 ? 然后我們再來看 如何來刪除關系 match (n:student)-[r]-(m:student) where n.name=\\\"小

    2024年02月12日
    瀏覽(30)
  • 圖數(shù)據(jù)庫_Neo4j學習cypher語言_使用CQL_構建明星關系圖譜_導入明星數(shù)據(jù)_導入明星關系數(shù)據(jù)_創(chuàng)建明星關系---Neo4j圖數(shù)據(jù)庫工作筆記0009

    圖數(shù)據(jù)庫_Neo4j學習cypher語言_使用CQL_構建明星關系圖譜_導入明星數(shù)據(jù)_導入明星關系數(shù)據(jù)_創(chuàng)建明星關系---Neo4j圖數(shù)據(jù)庫工作筆記0009

    首先找到明星數(shù)據(jù) ? 可以看到有一個sheet1,是,記錄了所有的關系的數(shù)據(jù) ? 然后比如我們搜索一個撒貝寧,可以看到撒貝寧的數(shù)據(jù) ? 然后這個是構建的CQL語句 ? 首先我們先去啟動服務 neo4j console ? ? 然后我們再來看一下以前導入的,可以看到導入很簡單, 就是上面有CQL 看一下節(jié)

    2024年02月12日
    瀏覽(28)
  • 【Neo4j】語句、應用

    【Neo4j】語句、應用

    2024年02月16日
    瀏覽(17)
  • SpringBoot高版本(2.4及以上)集成neo4j并進行增刪改查,通俗易懂附源代碼

    SpringBoot高版本(2.4及以上)集成neo4j并進行增刪改查,通俗易懂附源代碼

    ? 跟著班導師做項目的時候遇到社交網(wǎng)絡的部分,而傳統(tǒng)的關系數(shù)據(jù)庫不能很好解決數(shù)據(jù)之間的關系,因此采用圖數(shù)據(jù)的方式進行存儲。Neo4j算是主流的圖數(shù)據(jù)庫,多應用于知識圖譜、社交網(wǎng)絡等。 ? 這兩天學習SpringBoot時碰到了很多問題 springboot集合neo4j引用了org.neo4j的包,

    2024年02月01日
    瀏覽(21)
  • 圖數(shù)據(jù)庫Neo4j——Neo4j簡介、數(shù)據(jù)結構 & Docker版本的部署安裝 & Cypher語句的入門

    圖數(shù)據(jù)庫Neo4j——Neo4j簡介、數(shù)據(jù)結構 & Docker版本的部署安裝 & Cypher語句的入門

    MySQL是一種開源的關系型數(shù)據(jù)庫管理系統(tǒng),使用SQL作為其查詢語言,常見的關系型數(shù)據(jù)庫有MySQL、Oracle、SQL Server、PostgreSQL等。相關博客文章如下: 【合集】MySQL的入門進階強化——從 普通人 到 超級賽亞人 的 華麗轉身 PostgreSQL數(shù)據(jù)庫——Docker版本的postgres安裝 Navicat連接方式

    2024年02月06日
    瀏覽(51)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包