像SQL一樣,Neo4j CQL在CQL MATCH命令中提供了WHERE子句來過濾MATCH查詢的結果。
簡單WHERE子句語法
WHERE <condition>
複雜WHERE子句語法
WHERE <condition> <boolean-operator> <condition>
我們可以使用布爾運算符在同一命令上放置多個條件。 請參考下一節,瞭解Neo4j CQL中可用的布爾運算符。
<condition>語法:
<property-name> <comparison-operator> <value>
語法說明:
S.No. | 語法元素 | 描述 |
---|---|---|
1 | WHERE | 它是一個Neo4j CQL關鍵字。 |
2 | <property-name><屬性名稱> | 它是節點或關係的屬性名稱。 |
3 | <comparison-operator><比較運算符> | 它是Neo4j CQL比較運算符之一。請參考下一節查看Neo4j CQL中可用的比較運算符。 |
4 | <value><值> | 它是一個字面值,如數字文字,字符串文字等。 |
Neo4j CQL中的布爾運算符
Neo4j支持以下布爾運算符在Neo4j CQL WHERE子句中使用以支持多個條件。
S.No. | 布爾運算符 | 描述 |
---|---|---|
1 | AND | 它是一個支持AND操作的Neo4j CQL關鍵字。 |
2 | OR | 它是一個Neo4j CQL關鍵字來支持OR操作。 |
3 | NOT | 它是一個Neo4j CQL關鍵字支持NOT操作。 |
4 | XOR | 它是一個支持XOR操作的Neo4j CQL關鍵字。 |
Neo4j CQL中的比較運算符
Neo4j 支持以下的比較運算符,在 Neo4j CQL WHERE 子句中使用來支持條件。
S.No. | 布爾運算符 | 描述 |
---|---|---|
1. | = | 它是Neo4j CQL“等於”運算符。 |
2. | <> | 它是一個Neo4j CQL“不等於”運算符。 |
3. | < | 它是一個Neo4j CQL“小於”運算符。 |
4. | > | 它是一個Neo4j CQL“大於”運算符。 |
5. | <= | 它是一個Neo4j CQL“小於或等於”運算符。 |
6. | >= | 它是一個Neo4j CQL“大於或等於”運算符。 |
例如:
此示例演示如何在MATCH Command中使用CQL WHERE子句根據員工名稱檢索員工詳細信息。
步驟1 -打開Neo4j數據瀏覽器
這是Neo4j數據瀏覽器主頁
步驟2 -在數據瀏覽器上鍵入以下命令
MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
步驟3 -點擊“執行”按鈕並觀察結果。
如果我們觀察結果,它返回4個員工節點詳細信息。
步驟4 -在數據瀏覽器上鍵入以下命令
MATCH (emp:Employee)
WHERE emp.name = 'Abc'
RETURN emp
步驟5 -點擊“執行”按鈕並觀察結果。
使用“網格視圖”查看節點詳細信息。如果我們觀察結果,它只返回一個名爲“Abc”的員工詳細信息。
例如:
此示例演示如何在MATCH Command中的CQL WHERE子句中使用多個條件與布爾運算符,以根據員工名稱檢索員工詳細信息。
步驟1 -打開Neo4j數據瀏覽器
步驟2 -在數據瀏覽器上鍵入以下命令
MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
步驟3 -點擊“執行”按鈕並觀察結果。
如果我們觀察結果,它返回4個員工節點詳細信息。
步驟4 -在數據瀏覽器上鍵入以下命令
MATCH (emp:Employee)
WHERE emp.name = 'Abc' OR emp.name = 'Xyz'
RETURN emp
步驟5-點擊“執行”按鈕並觀察結果。
使用“網格視圖”查看節點詳細信息。如果我們觀察到結果,它只返回兩個名爲“Abc”或“Xyz”的員工詳細信息。
使用WHERE子句創建關係
在Neo4J CQL中,我們可以以不同的方式創建拖曳節點之間的關係。
創建兩個現有節點之間的關係
一次創建兩個節點和它們之間的關係
使用WHERE子句創建兩個現有節點之間的關係
我們已經討論了前兩章中的前兩種方法。 現在我們將在本章中討論“使用WHERE子句創建兩個現有節點之間的關係”。
語法
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. | 語法元素 | 描述 |
---|---|---|
1 | MATCH,WHERE,CREATE | 他們是Neo4J CQL關鍵字。 |
2 | <node1-label-name> | 它是一個用於創建關係的節點一標籤名稱。 |
3 | <node1-name> | 它是一個用於創建關係的節點名稱。 |
4 | <node2-label-name> | 它是一個用於創建關係的節點一標籤名稱。 |
5 | <node2-name> | 它是一個用於創建關係的節點名稱。 |
6 | <condition> | 它是一個Neo4J CQL WHERE子句條件。 它可以是簡單的或複雜的。 |
7 | <relationship-label-name> | 這是新創建的節點一和節點二之間的關係的標籤名稱。 |
8 | <relationship-name> | 這是新創建的節點1和節點2之間的關係的名稱。 |
9 | <relationship-properties> | 這是一個新創建節點一和節點二之間關係的屬性列表(鍵 - 值對)。 |
例如:
此示例演示如何使用WHERE子句創建兩個現有節點之間的關係。
步驟1 -打開Neo4J數據瀏覽器
步驟2 -在數據瀏覽器上鍵入以下命令,以驗證我們的Neo4J數據庫中是否存在所需的客戶節點。
MATCH (cust:Customer)
RETURN cust.id,cust.name,cust.dob
步驟3 -點擊“執行”按鈕並觀察結果。
如果我們觀察結果,它表明我們所需的客戶節點在我們的Neo4J數據庫中可用。
步驟4 -在數據瀏覽器上鍵入以下命令,驗證我們的Neo4J數據庫中是否存在所需的CreditCard節點。
MATCH (cc:CreditCard)
RETURN cc.id,cc.number,cc.expiredate,cc.cvv
步驟5 -點擊“執行”按鈕並觀察結果。
如果我們觀察結果,它表明我們所需的CreditCard節點在我們的Neo4J數據庫中可用。
步驟6 -在數據瀏覽器上鍵入以下命令以創建客戶和CreditCard節點之間的關係。
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
步驟7 -點擊“執行”按鈕並觀察結果。
單擊關係並在單獨的窗口中觀察其屬性
現在我們通過使用Neo4J CQL WHERE子句在兩個現有節點之間創建了一個NEW關係。