?? Neo4j ?? |
?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ??
?? 越難的東西,越要努力堅(jiān)持,因?yàn)樗哂泻芨叩膬r(jià)值,算法就是這樣?
?? 作者簡介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文|經(jīng)驗(yàn)分享|好用的網(wǎng)站工具分享??????
?? 恭喜你發(fā)現(xiàn)一枚寶藏博主,趕快收入囊中吧??
?? 人生如棋,我愿為卒,行動(dòng)雖慢,可誰曾見我后退一步?????
?? Neo4j ?? |
?? Neo4j的CQL詳細(xì)使用教程
Neo4j是一款高度可伸縮的圖形數(shù)據(jù)庫,它使用Cypher查詢語言處理圖形數(shù)據(jù)。但是,Neo4j還可以使用CQL(Cypher Query Language)作為處理和查詢數(shù)據(jù)的替代方式。本篇博客將介紹如何使用CQL查詢語言在Neo4j中創(chuàng)建、修改和查詢數(shù)據(jù),以及一些常見的案例演示。
?? Neo4j官方CQL手冊(cè)
Neo4j官方指導(dǎo)手冊(cè)
?? CQL 基本語法
在學(xué)習(xí)CQL之前,有必要先學(xué)習(xí)一些基本的語法、鍵和操作符。
?? 創(chuàng)建節(jié)點(diǎn)
要在Neo4j中創(chuàng)建一個(gè)節(jié)點(diǎn),需要使用以下語法:
CREATE (node_name:label_type {property:value});
其中:
-
CREATE
: 創(chuàng)建新節(jié)點(diǎn)。 -
node_name
: 節(jié)點(diǎn)的名稱。 -
label_type
: 節(jié)點(diǎn)所屬的標(biāo)簽類型。 -
property:value
: 節(jié)點(diǎn)屬性和值。
例如,要?jiǎng)?chuàng)建一個(gè)名為John
的人員節(jié)點(diǎn),具有名為age
的屬性和值為30
的值,可以使用以下命令:
CREATE (John:Person { age: 30 });
如果要?jiǎng)?chuàng)建多個(gè)帶有相同標(biāo)簽的節(jié)點(diǎn),則可以使用以下語法:
CREATE (node_name_1:label_type {property:value}), (node_name_2:label_type {property:value}), ...;
例如,要?jiǎng)?chuàng)建兩個(gè)分別名為John
和Sandra
的人員節(jié)點(diǎn),都屬于Person
標(biāo)簽,可以使用以下命令:
CREATE (John:Person { age: 30 }), (Sandra:Person { age: 25 });
?? 創(chuàng)建關(guān)系
在Neo4j中,關(guān)系是將兩個(gè)節(jié)點(diǎn)連接在一起的東西。要在Neo4j中創(chuàng)建關(guān)系,需要使用以下語法:
CREATE (node_name_1:label_type)-[:relationship_type {property:value}]->(node_name_2:label_type);
其中:
-
node_name_1
: 路徑的開始節(jié)點(diǎn)。 -
label_type
: 開始節(jié)點(diǎn)的標(biāo)簽類型。 -
relationship_type
: 路徑的關(guān)系類型。 -
property:value
: 關(guān)系屬性和值。
例如,要在兩個(gè)已經(jīng)創(chuàng)建的節(jié)點(diǎn)之間創(chuàng)建FRIENDS_WITH
關(guān)系,可以使用以下命令:
MATCH (node1:Person {name: "John"}), (node2:Person {name: "Sandra"})
CREATE (node1)-[:FRIENDS_WITH {years:3}]->(node2);
?? 查詢節(jié)點(diǎn)
要在Neo4j中查詢節(jié)點(diǎn),需要使用以下語法:
MATCH (node_name:label_type) WHERE node_name.property = value RETURN node_name;
其中:
-
MATCH
: 匹配查詢模式。 -
node_name
: 匹配節(jié)點(diǎn)的名稱。 -
label_type
: 匹配節(jié)點(diǎn)所屬標(biāo)簽類型。 -
WHERE
: 匹配額外的條件。 -
property
: 節(jié)點(diǎn)屬性。 -
value
: 節(jié)點(diǎn)屬性的值。 -
RETURN
: 返回匹配到的結(jié)果。
例如,要查詢某條關(guān)系的節(jié)點(diǎn),可以使用以下命令:
MATCH (:Person {name: "John"})-[:FRIENDS_WITH]->(p:Person) RETURN p;
?? 修改節(jié)點(diǎn)
要在Neo4j中修改節(jié)點(diǎn)信息,需要使用以下語法:
MATCH (node_name:label_type {property:value}) SET node_name.new_property = new_value;
其中:
-
MATCH
: 匹配查詢模式。 -
node_name
: 匹配節(jié)點(diǎn)的名稱。 -
label_type
: 匹配節(jié)點(diǎn)所屬標(biāo)簽類型。 -
property
: 節(jié)點(diǎn)屬性。 -
value
: 節(jié)點(diǎn)屬性的值。 -
SET
: 設(shè)置節(jié)點(diǎn)的新屬性。 -
new_property
: 節(jié)點(diǎn)新的屬性。 -
new_value
: 節(jié)點(diǎn)新屬性的值。
例如,要更改John
節(jié)點(diǎn)的年齡屬性為40
,可以使用以下命令:
MATCH (p:Person {name: 'John'})
SET p.age = 40
RETURN p;
?? DELETE命令
在Neo4j的CQL(Cypher Query Language)中,DELETE
命令是用于刪除節(jié)點(diǎn)和關(guān)系的重要命令。本篇博客將介紹如何使用DELETE
命令在Neo4j中刪除數(shù)據(jù),以及一些實(shí)際的案例演示。
?? CQL中的DELETE基本語法
要在Neo4j中刪除節(jié)點(diǎn)和關(guān)系,您可以使用以下語法:
MATCH (node_name:label_type {property:value}) OPTIONAL MATCH (node_name)-[relation:relationship_type]-()
DELETE node_name, relation;
其中:
-
MATCH
: 匹配查詢模式。 -
node_name
: 匹配節(jié)點(diǎn)的名稱。 -
label_type
: 匹配節(jié)點(diǎn)所屬標(biāo)簽類型。 -
property
: 節(jié)點(diǎn)屬性。 -
value
: 節(jié)點(diǎn)屬性的值。 -
OPTIONAL MATCH
: 連接可選的查詢模式。 -
relationship_type
: 查詢模式中的關(guān)系類型。 -
relation
: 匹配的關(guān)系。 -
DELETE
: 刪除匹配的節(jié)點(diǎn)和關(guān)系。
例如,要?jiǎng)h除節(jié)點(diǎn)名稱為Jane
的Person
節(jié)點(diǎn)和連接至該節(jié)點(diǎn)的所有關(guān)系,可以使用以下命令:
MATCH (p:Person {name: 'Jane'})
OPTIONAL MATCH (p)-[r]-()
DELETE p, r;
這將刪除節(jié)點(diǎn)p
以及與之相關(guān)的所有關(guān)系。
?? CQL案例演示
接下來,我們將介紹一些關(guān)于使用CQL進(jìn)行刪除的實(shí)際案例。
?? 案例一:刪除節(jié)點(diǎn)
假設(shè)我們要?jiǎng)h除一個(gè)標(biāo)簽類型為Person
的節(jié)點(diǎn)。以下是刪除節(jié)點(diǎn)操作的示例代碼:
MATCH (p:Person {name: 'John'})
OPTIONAL MATCH (p)-[r]-()
DELETE p, r;
這將刪除名為John
的Person
節(jié)點(diǎn)及其連接的關(guān)系。
?? 案例二:刪除一類節(jié)點(diǎn)
假設(shè)我們要?jiǎng)h除標(biāo)簽類型為Person
的所有節(jié)點(diǎn)。以下是刪除所有Person
節(jié)點(diǎn)及其關(guān)系的示例代碼:
MATCH (p:Person)
OPTIONAL MATCH (p)-[r]-()
DELETE p, r;
這將刪除所有標(biāo)簽類型為Person
的節(jié)點(diǎn)及其與之關(guān)聯(lián)的關(guān)系。
?? 案例三:刪除關(guān)系
此時(shí),我們要?jiǎng)h除John
節(jié)點(diǎn)和Sandra
節(jié)點(diǎn)之間的FRIENDS_WITH
關(guān)系。以下是刪除指定關(guān)系的示例代碼:
MATCH (:Person {name: "John"})-[r:FRIENDS_WITH]-(:Person {name: "Sandra"})
DELETE r;
這將刪除John
和Sandra
節(jié)點(diǎn)之間的FRIENDS_WITH
關(guān)系。
?? 案例四:批量刪除
有時(shí)候,我們需要根據(jù)某些條件,對(duì)數(shù)據(jù)進(jìn)行批量刪除。例如,我們要?jiǎng)h除所有Person
節(jié)點(diǎn)的年齡小于30歲或超過40歲的節(jié)點(diǎn)。以下是示例代碼:
MATCH (p:Person)
WHERE p.age < 30 OR p.age > 40
OPTIONAL MATCH (p)-[r]-()
DELETE p, r;
這將刪除所有Person
節(jié)點(diǎn)的年齡小于30歲或大于40歲的節(jié)點(diǎn)及其與之關(guān)聯(lián)的所有關(guān)系。
?? REMOVE命令
?? CQL中的REMOVE基本語法
要在Neo4j中修改節(jié)點(diǎn)屬性,可以使用以下語法:
MATCH (node_name:label_type {property:value})
REMOVE node_name.property_name;
其中:
-
MATCH
: 匹配查詢模式。 -
node_name
: 匹配節(jié)點(diǎn)的名稱。 -
label_type
: 匹配節(jié)點(diǎn)所屬標(biāo)簽類型。 -
property
: 節(jié)點(diǎn)屬性。 -
value
: 節(jié)點(diǎn)屬性的值。 -
REMOVE
: 刪除匹配節(jié)點(diǎn)的指定屬性名及其值。
例如,要?jiǎng)h除名為John
的Person
節(jié)點(diǎn)的age
屬性,可以使用以下命令:
MATCH (p:Person {name: 'John'})
REMOVE p.age;
這將刪除名為John
的Person
節(jié)點(diǎn)的age
屬性。
?? CQL案例演示
接下來,我們將介紹一些關(guān)于使用CQL進(jìn)行屬性修改的實(shí)際案例。
?? 案例一:移除節(jié)點(diǎn)屬性
此時(shí),我們要移除名為John
的Person
節(jié)點(diǎn)的age
屬性。以下是移除指定屬性的示例代碼:
MATCH (p:Person {name: 'John'})
REMOVE p.age;
這將刪除名為John
的Person
節(jié)點(diǎn)的age
屬性。
?? 案例二:移除節(jié)點(diǎn)列表屬性
如果要?jiǎng)h除節(jié)點(diǎn)上的列表屬性中的某個(gè)元素,可以使用以下語法:
MATCH (n {name: 'Alice'})
REMOVE n.prop[index];
例如,在刪除一個(gè)名為Alice
節(jié)點(diǎn)上的列表屬性prop
的第二個(gè)元素時(shí),可以使用以下命令:
MATCH (n {name: 'Alice'})
REMOVE n.prop[1];
這將刪除節(jié)點(diǎn)n
上prop
列表屬性的第二個(gè)元素。
?? ORDER BY排序
CQL還提供了用于排序結(jié)果的功能。
- 過濾條件可以使用
WHERE
語句指定,例如根據(jù)屬性值過濾節(jié)點(diǎn)或關(guān)系。 - 排序可以使用
ORDER BY
語句指定,例如按屬性值對(duì)結(jié)果進(jìn)行升序或降序排序。
MATCH (node:Label)
WHERE node.property = value
RETURN node
ORDER BY node.property ASC|DESC
?? UNION合并
UNION合并命令是CQL中的一種關(guān)鍵字,它將兩個(gè)或多個(gè)相同類型的查詢結(jié)果合并成一個(gè)結(jié)果集返回給用戶。UNION合并命令通常用于將多個(gè)子查詢的結(jié)果集合并為一個(gè)完整的結(jié)果集,并對(duì)這些結(jié)果進(jìn)行排序和篩選。
?? UNION合并命令的語法
MATCH (n:Label)
WHERE n.property = 'value'
RETURN n.property
UNION
MATCH (m:Label)
WHERE m.property = 'other_value'
RETURN m.other_property
ORDER BY n.property DESC
??UNION合并命令的案例演示
假設(shè)我們有一個(gè)圖,其中包含了多個(gè)節(jié)點(diǎn)和關(guān)系,我們需要查詢這個(gè)圖中與“Tom”節(jié)點(diǎn)和“Jerry”節(jié)點(diǎn)相連的所有節(jié)點(diǎn),并將結(jié)果用UNION合并命令合并起來。
?? 案例一:合并兩個(gè)查詢結(jié)果集
假設(shè)我們需要查詢兩個(gè)標(biāo)簽類型為Person的節(jié)點(diǎn)集合,并將它們合并為一個(gè)結(jié)果集。以下是合并兩個(gè)查詢結(jié)果集的示例代碼:
MATCH (p:Person)
WHERE p.age > 30
RETURN p.name
UNION
MATCH (p:Person)
WHERE p.gender = 'male'
RETURN p.name;
這將返回age大于30歲和性別為male的所有人的名稱,其中重復(fù)的結(jié)果會(huì)被合并成一個(gè)結(jié)果。
?? 案例二:合并多個(gè)查詢結(jié)果集
如果我們想從多個(gè)標(biāo)簽類型為Person的節(jié)點(diǎn)集合中檢索信息,比如想查看所有age超過40歲或者性別為female的人。以下是合并多個(gè)查詢結(jié)果集的示例代碼:
MATCH (p:Person)
WHERE p.age > 40
RETURN p.name
UNION
MATCH (p:Person)
WHERE p.gender = 'female'
RETURN p.name
UNION
MATCH (p:Person)
WHERE p.nationality = 'USA'
RETURN p.name;
這將返回滿足年齡、性別和國籍條件的所有人的名稱,其中重復(fù)的結(jié)果會(huì)被合并成一個(gè)結(jié)果。
?? 案例三:合并多個(gè)關(guān)系查詢結(jié)果集
此時(shí),我們想要找到與特定節(jié)點(diǎn)相關(guān)聯(lián)的所有朋友和家庭成員。以下是基于關(guān)系合并多個(gè)查詢結(jié)果集的示例代碼:
MATCH (n:Person {name: 'John'})-[:FRIENDS_WITH]->(f)
RETURN f.name
UNION
MATCH (n:Person {name: 'John'})-[:IS_FAMILY_OF]->(f)
RETURN f.name;
這將返回名稱為John的Person節(jié)點(diǎn)的朋友和家庭成員名稱。
?? UNION ALL子句
在Neo4j的CQL(Cypher Query Language)中,UNION ALL是一種用于合并多個(gè)查詢結(jié)果集的關(guān)鍵字,它與UNION的區(qū)別是它不會(huì)合并重復(fù)的結(jié)果。本篇博客將介紹如何使用UNION ALL命令在Neo4j中合并多個(gè)查詢結(jié)果集,以及一些實(shí)際的案例演示。
?? UNION ALL合并命令的語法
要在Neo4j中將多個(gè)查詢結(jié)果集合并,可以使用以下語法:
QUERY1
UNION ALL
QUERY2
UNION ALL
QUERY3
...
其中,QUERY1,QUERY2,QUERY3等都是要合并的查詢語句,UNION ALL命令用于合并這些查詢結(jié)果集并返回一個(gè)整體的結(jié)果集,不去除任何重復(fù)的結(jié)果。
??UNION ALL合并命令的案例演示
接下來,我們將介紹一些使用CQL進(jìn)行結(jié)果集合并的實(shí)際案例。
?? 案例一:合并兩個(gè)查詢結(jié)果集
假設(shè)我們需要查詢兩個(gè)標(biāo)簽類型為Person的節(jié)點(diǎn)集合,并將它們合并為一個(gè)結(jié)果集。以下是合并兩個(gè)查詢結(jié)果集的示例代碼:
MATCH (p:Person)
WHERE p.age > 30
RETURN p.name AS name
UNION ALL
MATCH (p:Person)
WHERE p.gender = 'male'
RETURN p.name AS name;
這將返回age大于30歲和性別為male的所有人的名稱,沒有去除任何重復(fù)的結(jié)果。
?? 案例二:合并多個(gè)查詢結(jié)果集
如果我們想從多個(gè)標(biāo)簽類型為Person的節(jié)點(diǎn)集合中檢索信息,比如想查看所有age超過40歲或者性別為female的人。以下是合并多個(gè)查詢結(jié)果集的示例代碼:
MATCH (p:Person)
WHERE p.age > 40
RETURN p.name AS name
UNION ALL
MATCH (p:Person)
WHERE p.gender = 'female'
RETURN p.name AS name
UNION ALL
MATCH (p:Person)
WHERE p.nationality = 'USA'
RETURN p.name AS name;
這將返回滿足年齡、性別和國籍條件的所有人的名稱,并將它們合并為一個(gè)結(jié)果集,沒有去除任何重復(fù)的結(jié)果。
?? 合并多個(gè)關(guān)系查詢結(jié)果集
此時(shí),我們想要找到與特定節(jié)點(diǎn)相關(guān)聯(lián)的所有朋友和家庭成員。以下是基于關(guān)系合并多個(gè)查詢結(jié)果集的示例代碼:
MATCH (n:Person {name: 'John'})-[:FRIENDS_WITH]->(f)
RETURN f.name AS name
UNION ALL
MATCH (n:Person {name: 'John'})-[:IS_FAMILY_OF]->(f)
RETURN f.name AS name;
這將返回名稱為John的Person節(jié)點(diǎn)的朋友和家庭成員名稱,并將它們合并為一個(gè)結(jié)果集,沒有去除任何重復(fù)的結(jié)果。
?? LIMIT和SKIP子句
在Neo4j的CQL(Cypher Query Language)中,LIMIT
和SKIP
是兩個(gè)用于控制查詢結(jié)果集返回的子句,可以被組合在一起使用來限制查詢的結(jié)果。本篇博客將介紹如何使用LIMIT
和SKIP
子句合并命令來控制查詢結(jié)果集的返回順序,以及一些實(shí)際的案例演示。
?? CQL中的LIMIT和SKIP基本語法
要在Neo4j中限制查詢結(jié)果集返回的數(shù)量,可以使用以下語法:
MATCH (n)
RETURN n.property
LIMIT n
SKIP m
其中,n
表示要返回的結(jié)果集數(shù)量,m
表示要跳過的結(jié)果集數(shù)量。使用LIMIT
和SKIP
子句時(shí),返回的結(jié)果集將會(huì)是從跳過指定數(shù)量的結(jié)果集之后的前n
個(gè)結(jié)果集。
?? CQL案例演示
接下來,我們將介紹一些使用CQL進(jìn)行結(jié)果集控制的實(shí)際案例。
?? 案例一:使用LIMIT和SKIP合并命令限制查詢結(jié)果
假設(shè)我們需要查詢標(biāo)簽類型為Person
的節(jié)點(diǎn)集中年齡大于30
歲的前5
個(gè)結(jié)果。以下是限制查詢結(jié)果的示例代碼:
MATCH (p:Person)
WHERE p.age > 30
RETURN p.name AS name
ORDER BY p.age DESC
SKIP 0
LIMIT 5;
這將返回年齡大于30
歲的前5
個(gè)人的名稱,并按照年齡降序排序。
?? 案例二:使用LIMIT和SKIP合并命令控制返回的關(guān)系
假設(shè)我們需要查詢與標(biāo)簽類型為Person
的節(jié)點(diǎn)集中Tom
節(jié)點(diǎn)相鄰的所有節(jié)點(diǎn),并且我們想返回這些節(jié)點(diǎn)的前3
個(gè)結(jié)果。以下是控制返回關(guān)系的示例代碼:
MATCH (n:Person { name: "Tom" })--(m)
RETURN m.name AS name
LIMIT 3;
這將返回與名稱為Tom的Person節(jié)點(diǎn)相鄰的前3個(gè)節(jié)點(diǎn)的名稱。
?? 案例三:使用組合LIMIT和SKIP合并命令實(shí)現(xiàn)分頁
假設(shè)我們希望為查詢結(jié)果分頁,每頁顯示5
個(gè)結(jié)果集,我們可以使用組合LIMIT
和SKIP
子句的方法實(shí)現(xiàn)分頁。以下是對(duì)查詢結(jié)果分頁的示例代碼:
MATCH (p:Person)
WHERE p.age > 30
RETURN p.name AS name, p.age AS age
ORDER BY p.age DESC
SKIP 5
LIMIT 5;
這將返回年齡大于30
歲的結(jié)果中的第二頁(跳過前5個(gè)結(jié)果集)中的前5個(gè)結(jié)果,以姓名和年齡的形式呈現(xiàn)。
?? Merge合并
在Neo4j的CQL(Cypher Query Language)中,MERGE
是一種用于創(chuàng)建或更新節(jié)點(diǎn)和關(guān)系的關(guān)鍵字。它可以用于合并現(xiàn)有的節(jié)點(diǎn)和關(guān)系,也可以用于創(chuàng)建新的節(jié)點(diǎn)和關(guān)系。本篇博客將介紹如何使用MERGE
子句合并命令來創(chuàng)建或更新節(jié)點(diǎn)和關(guān)系的操作,以及一些實(shí)際的案例演示。
?? CQL中的MERGE基本語法
要在Neo4j中使用MERGE
子句創(chuàng)建或更新節(jié)點(diǎn)和關(guān)系,可以使用以下語法:
MERGE (n:Node { property: value })
ON CREATE SET n.property_1 = value_1, n.property_2 = value_2, ...
ON MATCH SET n.existing_property = value
其中,n
表示要?jiǎng)?chuàng)建或更新的節(jié)點(diǎn),Node
表示節(jié)點(diǎn)的標(biāo)簽,property
表示節(jié)點(diǎn)的屬性,value
表示屬性的值。ON CREATE
和ON MATCH
子句分別表示在創(chuàng)建和更新節(jié)點(diǎn)時(shí)設(shè)置屬性的值。
?? CQL案例演示
接下來,我們將介紹一些使用CQL進(jìn)行節(jié)點(diǎn)和關(guān)系處理的實(shí)際案例。
?? 案例一:使用MERGE創(chuàng)建新節(jié)點(diǎn)
假設(shè)我們要在名稱為Person
的節(jié)點(diǎn)集合中創(chuàng)建一個(gè)名為Tom
的新節(jié)點(diǎn),并將它的年齡設(shè)置為28
歲。以下是創(chuàng)建新節(jié)點(diǎn)的示例代碼:
MERGE (p:Person {name: 'Tom'})
ON CREATE SET p.age = 28;
這將在名稱為Person
的節(jié)點(diǎn)集合中創(chuàng)建一個(gè)名為Tom
的新節(jié)點(diǎn),并將它的屬性age
設(shè)置為28
歲。
?? 案例二:使用MERGE更新現(xiàn)有節(jié)點(diǎn)
假設(shè)我們要更新名稱為Person
的節(jié)點(diǎn)集合中名稱為Tom
的節(jié)點(diǎn)的屬性age
為29
歲。以下是更新現(xiàn)有節(jié)點(diǎn)的示例代碼:
MERGE (p:Person {name: 'Tom'})
ON MATCH SET p.age = 29;
這將查詢名稱為Person
的節(jié)點(diǎn)集合中名稱為Tom
的節(jié)點(diǎn),如果它已經(jīng)存在,則更新它的age
屬性為29
歲。
?? 案例三:使用MERGE創(chuàng)建或更新關(guān)系
此時(shí),我們想要查找標(biāo)志為Person
的節(jié)點(diǎn)集合中的兩個(gè)節(jié)點(diǎn)之間是否存在關(guān)系FRIENDS_WITH
,如果不存在,則創(chuàng)建這個(gè)關(guān)系。以下是創(chuàng)建或更新關(guān)系的示例代碼:
MATCH (p:Person {name: 'Tom'}), (q:Person {name: 'Jerry'})
MERGE (p)-[r:FRIENDS_WITH]->(q)
ON CREATE SET r.type = 'friendship', r.since = '2020'
ON MATCH SET r.type = 'friendship';
這將在節(jié)點(diǎn)Tom
和Jerry
之間創(chuàng)建一個(gè)帶有類型和時(shí)間戳的FRIENDS_WITH
關(guān)系。如果已經(jīng)存在該關(guān)系,則只更新它的type屬性。
注意:
可以使用MERGE
命令來查找現(xiàn)有的節(jié)點(diǎn)和關(guān)系,如果它們不存在,則創(chuàng)建它們;如果它們已經(jīng)存在,則更新它們的屬性。讀者可以用這些命令來創(chuàng)建新節(jié)點(diǎn)和關(guān)系,更新現(xiàn)有節(jié)點(diǎn)和關(guān)系,在節(jié)點(diǎn)集合中搜索和處理數(shù)據(jù)。相信通過本篇博客的學(xué)習(xí),讀者已經(jīng)能夠熟練使用CQL中的MERGE
子句合并命令了。
?? NULL值
-
Neo4j CQL將空值視為對(duì)節(jié)點(diǎn)或關(guān)系的屬性的缺失值或未定義值。
-
當(dāng)我們創(chuàng)建一個(gè)具有現(xiàn)有節(jié)點(diǎn)標(biāo)簽名稱但未指定其屬性值的節(jié)點(diǎn)時(shí),它將創(chuàng)建一個(gè)具有NULL屬性值的新節(jié)點(diǎn)。
-
還可以用null 作為查詢的條件。
?? IN操作符
與SQL一樣,Neo4j CQL提供了一個(gè)IN運(yùn)算符,以便為CQL命令提供值的集合。
IN [<Collection-of-values>]
案例:
MATCH (e:Employee)
WHERE e.id IN [12,34]
RETURN e.id,e.name,e.sal,e.deptno
?? 總結(jié)
本篇博客向讀者介紹了CQL基本語法,包括創(chuàng)建節(jié)點(diǎn)、創(chuàng)建關(guān)系、查詢節(jié)點(diǎn)、修改節(jié)點(diǎn)等基礎(chǔ)操作。相信通過本篇博客的學(xué)習(xí),讀者已經(jīng)掌握了如何在Neo4j中使用CQL進(jìn)行數(shù)據(jù)處理和查詢。
?? 共勉
最后,我想和大家分享一句一直激勵(lì)我的座右銘,希望可以與大家共勉! |
文章來源:http://www.zghlxwxcb.cn/news/detail-508391.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-508391.html
到了這里,關(guān)于【Neo4j教程之CQL命令基本使用】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!