目錄
1.節點語法
1.1.CREATE--創建節點
1.2.MATCH--查詢節點
1.3.RETURN--返回節點
1.4.WHERE--過濾節點
2.關系語法
2.1.創建關系
2.2.查詢關系
3.刪除語法
3.1.DELETE 刪除
3.2.REMOVE 刪除
4.功能補充
4.1.SET (添加屬性)
4.2.NULL 值
4.3.ORDER BY (排序)
4.4.LIMIT 和 SKIP (限制)
1.節點語法
Cypher?采用一對圓括號來表示節點。如:(), (foo)。下面是一些常見的節點表示法:
// 表示一個節點,但是沒有屬性
()
// 節點變量為 matrix
(matrix)
// 節點標簽為 Movie 的節點
(:Movie)
// 節點變量為 matrix,節點標簽為 Movie 的節點
(matrix:Movie)
// 節點變量為 matrix,節點標簽為 Movie,節點屬性 title 為 ET·Go 的節點
(matrix:Movie {title: "ET·Go"})
// 節點變量為 matrix,節點標簽為 Movie,節點屬性 title 為 Spider Man ,released 為 1997 的節點
(matrix:Movie {title: "Spider Man", released: 1997})
1.1.CREATE--創建節點
create
?語句是創建模型語句用來創建數據模型。
// 創建簡單節點
create (n)
// 創建多個節點
create (n),(m)
// 創建帶標簽和屬性的節點并返回節點
create (n:person {name:"如來"}) return n
1.2.MATCH--查詢節點
Neo4j CQL MATCH 命令用于
- 從數據庫獲取有關節點和屬性的數據;
- 從數據庫獲取有關節點,關系和屬性的數據。
match (Person:person {name: "如來"}) return Person
Person:變量(任意)
person:標簽
{}:屬性
():節點
1.3.RETURN--返回節點
Neo4j CQL RETURN 子句用于
- 檢索節點的某些屬性
- 檢索節點的所有屬性
- 檢索節點和關聯關系的某些屬性
- 檢索節點和關聯關系的所有屬性
注意:RETURN
、MATCH
?兩個需要搭配使用。
1.4.WHERE--過濾節點
像 SQL 一樣,Neo4j CQL 在 CQL MATCH 命令中提供了 WHERE 子句來過濾 MATCH 查詢的結果。
MATCH (n:person) where n.name='孫悟空' or n.name='豬八戒' RETURN n
2.關系語法
Cypher 使用一對短橫線(即“–”)表示:一個無方向關系。有方向的關系在其中一端加上一個箭頭(即“<–”或“–>”)。方括號表達式?[…]
?可用于添加關系信息。里面可以包含變量、屬性和或者類型信息。關系的常見表達方式如下:
// 無方向關系
--
// 有方向關系,指向一個節點
-->
// 有方向的關系,關系變量為 reole
-[role]->
// 有方向的關系,關系標簽為 ACTED_IN
-[:ACTED_IN]->
// 有方向的關系,關系標簽為 ACTED_IN,關系變量為 role
-[role:ACTED_IN]->
// 有方向的關系,關系標簽為 ACTED_IN,關系變量為 role,屬性 roles 的值為 Neo
-[role:ACTED_IN {roles: ["Neo"]}]->
2.1.創建關系
Neo4j 圖數據庫遵循屬性圖模型來存儲和管理其數據。 根據屬性圖模型,關系應該是定向的。 否則,Neo4j 將拋出一個錯誤消息。 基于方向性,Neo4j 關系被分為兩種主要類型。
- 單向關系
- 雙向關系
使用新節點創建關系
CREATE (n:person {name:'楊戩'})-[r:師傅]->(m:person {name:'玉鼎真人'}) return type(r)
create (n:person {name:'沙僧'}),(m:person{name:'唐僧'}) create (n)-[r:`師傅`{relation:'師傅'}]->(m) return r
2.2.查詢關系
MATCH (a)-[r:師傅]->(b)
RETURN a, r, b
3.刪除語法
3.1.DELETE 刪除
-
刪除節點;
-
刪除節點及相關節點和關系。
# 刪除節點(前提:節點不存在關系)
MATCH (n:person {name:"白龍馬"}) delete n;
# 刪除關系
MATCH (n:person {name:"沙僧"})<-[r]-(m) delete r return type(r);
注意:刪除結點的前提是節點沒有關系。
3.2.REMOVE 刪除
有時基于客戶端要求,我們需要向現有節點或關系添加或刪除屬性。我們使用Neo4j CQL REMOVE 子句來刪除節點或關系的現有屬性。
-
刪除節點或關系的標簽;
-
刪除節點或關系的屬性。
// 刪除屬性MATCH (n:role {name:"fox"}) remove n.age return n;// 創建節點(兩個標簽)CREATE (m:role:person {name:"cat233"})// 刪除標簽MATCH (m:role:person {name:"cat233"}) remove m:person return m
4.功能補充
4.1.SET (添加屬性)
有時,根據我們的客戶端要求,我們需要向現有節點或關系添加新屬性。要做到這一點,Neo4j CQL 提供了一個SET子句。
向現有節點或關系添加新屬性;
添加或更新屬性值。 MATCH (n:role {name:"cat"}) set n.age=32 return n
4.2.NULL 值
Neo4j CQL將空值視為對節點或關系的屬性的缺失值或未定義值。
當我們創建一個具有現有節點標簽名稱但未指定其屬性值的節點時,它將創建一個具有NULL屬性值的新節點。
// 查詢是否為空
match (n:`西游`) where n.label is null return id(n),n.name,n.tail,n.label
4.3.ORDER BY (排序)
Neo4j CQL 在 MATCH 命令中提供了?ORDER BY
?子句,對 MATCH 查詢返回的結果進行排序。 我們可以按升序或降序對行進行排序。默認情況下,它按升序對行進行排序。 如果我們要按降序對它們進行排序,我們需要使用?DESC
?子句。
// 按 id 進行降序
MATCH (n:`西游`) RETURN id(n),n.name order by id(n) desc
4.4.LIMIT 和 SKIP (限制)
Neo4j CQL 已提供?LIMIT
?子句和?SKIP
?來過濾或限制查詢返回的行數。?LIMIT
?返回前幾行,SKIP
?忽略前幾行。
// 前兩行
MATCH (n:`西游`) RETURN n LIMIT 2
// 忽略前兩行
MATCH (n:person) RETURN n SKIP 2