Neo4j CQL - WHERE子句

2018-01-30 14:40 更新

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


簡單WHERE子句語法

WHERE <condition>


復(fù)雜WHERE子句語法

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

我們可以使用布爾運(yùn)算符在同一命令上放置多個(gè)條件。 請參考下一節(jié),了解Neo4j CQL中可用的布爾運(yùn)算符。


<condition>語法:

<property-name> <comparison-operator> <value>


語法說明:

S.No.語法元素描述
1WHERE它是一個(gè)Neo4j CQL關(guān)鍵字。
2<property-name>
<屬性名稱>
它是節(jié)點(diǎn)或關(guān)系的屬性名稱。
3<comparison-operator>
<比較運(yùn)算符>
它是Neo4j CQL比較運(yùn)算符之一。請參考下一節(jié)查看Neo4j CQL中可用的比較運(yùn)算符。
4<value>
<值>
它是一個(gè)字面值,如數(shù)字文字,字符串文字等。


Neo4j CQL中的布爾運(yùn)算符

Neo4j支持以下布爾運(yùn)算符在Neo4j CQL WHERE子句中使用以支持多個(gè)條件。

S.No.布爾運(yùn)算符描述
1AND它是一個(gè)支持AND操作的Neo4j CQL關(guān)鍵字。
2OR它是一個(gè)Neo4j CQL關(guān)鍵字來支持OR操作。
3NOT它是一個(gè)Neo4j CQL關(guān)鍵字支持NOT操作。 
4XOR它是一個(gè)支持XOR操作的Neo4j CQL關(guān)鍵字。 


Neo4j CQL中的比較運(yùn)算符

Neo4j 支持以下比較運(yùn)算符,在 Neo4j CQL WHERE 子句使用支持條件。

S.No.布爾運(yùn)算符描述
1.=它是Neo4j CQL“等于”運(yùn)算符。
2.<>它是一個(gè)Neo4j CQL“不等于”運(yùn)算符。
3.<它是一個(gè)Neo4j CQL“小于”運(yùn)算符。
4.>它是一個(gè)Neo4j CQL“大于”運(yùn)算符。
5.<=它是一個(gè)Neo4j CQL“小于或等于”運(yùn)算符。
6.>=它是一個(gè)Neo4j CQL“大于或等于”運(yùn)算符。

例如:

此示例演示如何在MATCH Command中使用CQL WHERE子句根據(jù)員工名稱檢索員工詳細(xì)信息。


步驟1 -打開Neo4j數(shù)據(jù)瀏覽器


在MATCH Command中使用CQL WHERE子句
這是Neo4j數(shù)據(jù)瀏覽器主頁


步驟2 -在數(shù)據(jù)瀏覽器上鍵入以下命令

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


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

步驟3 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


返回4個(gè)員工節(jié)點(diǎn)詳細(xì)信息
如果我們觀察結(jié)果,它返回4個(gè)員工節(jié)點(diǎn)詳細(xì)信息。


步驟4 -在數(shù)據(jù)瀏覽器上鍵入以下命令

MATCH (emp:Employee) 
WHERE emp.name = 'Abc'
RETURN emp


MATCH (emp:Employee)  WHERE emp.name = 'Abc' RETURN emp


步驟5 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


返回一個(gè)名為“Abc”的員工詳細(xì)信息
使用“網(wǎng)格視圖”查看節(jié)點(diǎn)詳細(xì)信息。如果我們觀察結(jié)果,它只返回一個(gè)名為“Abc”的員工詳細(xì)信息。


例如:

此示例演示如何在MATCH Command中的CQL WHERE子句中使用多個(gè)條件與布爾運(yùn)算符,以根據(jù)員工名稱檢索員工詳細(xì)信息。


步驟1 -打開Neo4j數(shù)據(jù)瀏覽器


根據(jù)員工名稱檢索員工詳細(xì)信息


步驟2 -在數(shù)據(jù)瀏覽器上鍵入以下命令
MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno


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

步驟3 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


它返回4個(gè)員工節(jié)點(diǎn)詳細(xì)信息
如果我們觀察結(jié)果,它返回4個(gè)員工節(jié)點(diǎn)詳細(xì)信息。


步驟4 -在數(shù)據(jù)瀏覽器上鍵入以下命令

MATCH (emp:Employee) 
WHERE emp.name = 'Abc' OR emp.name = 'Xyz'
RETURN emp


MATCH (emp:Employee)  WHERE emp.name = 'Abc' OR emp.name = 'Xyz' RETURN emp

步驟5-點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


返回兩個(gè)名為“Abc”或“Xyz”的員工詳細(xì)信息。
使用“網(wǎng)格視圖”查看節(jié)點(diǎn)詳細(xì)信息。如果我們觀察到結(jié)果,它只返回兩個(gè)名為“Abc”或“Xyz”的員工詳細(xì)信息。


使用WHERE子句創(chuàng)建關(guān)系

在Neo4J CQL中,我們可以以不同的方式創(chuàng)建拖曳節(jié)點(diǎn)之間的關(guān)系。

  • 創(chuàng)建兩個(gè)現(xiàn)有節(jié)點(diǎn)之間的關(guān)系

  • 一次創(chuàng)建兩個(gè)節(jié)點(diǎn)和它們之間的關(guān)系

  • 使用WHERE子句創(chuàng)建兩個(gè)現(xiàn)有節(jié)點(diǎn)之間的關(guān)系

我們已經(jīng)討論了前兩章中的前兩種方法。 現(xiàn)在我們將在本章中討論“使用WHERE子句創(chuàng)建兩個(gè)現(xiàn)有節(jié)點(diǎn)之間的關(guān)系”。

語法

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>) 


語法說明:

S.No.語法元素描述
1MATCH,WHERE,CREATE他們是Neo4J CQL關(guān)鍵字。
2<node1-label-name>它是一個(gè)用于創(chuàng)建關(guān)系的節(jié)點(diǎn)一標(biāo)簽名稱。
3<node1-name>它是一個(gè)用于創(chuàng)建關(guān)系的節(jié)點(diǎn)名稱。
4<node2-label-name>它是一個(gè)用于創(chuàng)建關(guān)系的節(jié)點(diǎn)一標(biāo)簽名稱。
5<node2-name>它是一個(gè)用于創(chuàng)建關(guān)系的節(jié)點(diǎn)名稱。
6<condition>它是一個(gè)Neo4J CQL WHERE子句條件。 它可以是簡單的或復(fù)雜的。
7<relationship-label-name>這是新創(chuàng)建的節(jié)點(diǎn)一和節(jié)點(diǎn)二之間的關(guān)系的標(biāo)簽名稱。
8<relationship-name>這是新創(chuàng)建的節(jié)點(diǎn)1和節(jié)點(diǎn)2之間的關(guān)系的名稱。
9<relationship-properties>這是一個(gè)新創(chuàng)建節(jié)點(diǎn)一和節(jié)點(diǎn)二之間關(guān)系的屬性列表(鍵 - 值對)。


例如:

此示例演示如何使用WHERE子句創(chuàng)建兩個(gè)現(xiàn)有節(jié)點(diǎn)之間的關(guān)系。


步驟1 -打開Neo4J數(shù)據(jù)瀏覽器


步驟2 -在數(shù)據(jù)瀏覽器上鍵入以下命令,以驗(yàn)證我們的Neo4J數(shù)據(jù)庫中是否存在所需的客戶節(jié)點(diǎn)。

MATCH (cust:Customer)
RETURN cust.id,cust.name,cust.dob


使用WHERE子句創(chuàng)建兩個(gè)現(xiàn)有節(jié)點(diǎn)之間的關(guān)系

步驟3 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


客戶節(jié)點(diǎn)在我們的Neo4J數(shù)據(jù)庫中可用
如果我們觀察結(jié)果,它表明我們所需的客戶節(jié)點(diǎn)在我們的Neo4J數(shù)據(jù)庫中可用。


步驟4 -在數(shù)據(jù)瀏覽器上鍵入以下命令,驗(yàn)證我們的Neo4J數(shù)據(jù)庫中是否存在所需的CreditCard節(jié)點(diǎn)。

MATCH (cc:CreditCard)
RETURN cc.id,cc.number,cc.expiredate,cc.cvv


驗(yàn)證我們的Neo4J數(shù)據(jù)庫中是否存在所需的CreditCard節(jié)點(diǎn)。

步驟5 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


CreditCard節(jié)點(diǎn)在我們的Neo4J數(shù)據(jù)庫中可用
如果我們觀察結(jié)果,它表明我們所需的CreditCard節(jié)點(diǎn)在我們的Neo4J數(shù)據(jù)庫中可用。


步驟6 -在數(shù)據(jù)瀏覽器上鍵入以下命令以創(chuàng)建客戶和CreditCard節(jié)點(diǎn)之間的關(guān)系。

MATCH (cust:Customer),(cc:CreditCard) 
WHERE cust.id = "1001" AND cc.id= "5001" 
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc) 
RETURN r


創(chuàng)建客戶和CreditCard節(jié)點(diǎn)之間的關(guān)系


步驟7 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


單擊關(guān)系并在單獨(dú)的窗口中觀察其屬性


在兩個(gè)現(xiàn)有節(jié)點(diǎn)之間創(chuàng)建了一個(gè)NEW關(guān)系
現(xiàn)在我們通過使用Neo4J CQL WHERE子句在兩個(gè)現(xiàn)有節(jié)點(diǎn)之間創(chuàng)建了一個(gè)NEW關(guān)系。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號