阅读(286) (21)

Neo4j CQL - WHERE子句

2016-12-19 07:40:49 更新

像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.语法元素描述
1WHERE它是一个Neo4j CQL关键字。
2<property-name>
<属性名称>
它是节点或关系的属性名称。
3<comparison-operator>
<比较运算符>
它是Neo4j CQL比较运算符之一。请参考下一节查看Neo4j CQL中可用的比较运算符。
4<value>
<值>
它是一个字面值,如数字文字,字符串文字等。


Neo4j CQL中的布尔运算符

Neo4j支持以下布尔运算符在Neo4j CQL WHERE子句中使用以支持多个条件。

S.No.布尔运算符描述
1AND它是一个支持AND操作的Neo4j CQL关键字。
2OR它是一个Neo4j CQL关键字来支持OR操作。
3NOT它是一个Neo4j CQL关键字支持NOT操作。 
4XOR它是一个支持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数据浏览器


在MATCH Command中使用CQL WHERE子句
这是Neo4j数据浏览器主页


步骤2 -在数据浏览器上键入以下命令

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 -点击“执行”按钮并观察结果。


返回4个员工节点详细信息
如果我们观察结果,它返回4个员工节点详细信息。


步骤4 -在数据浏览器上键入以下命令

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


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


步骤5 -点击“执行”按钮并观察结果。


返回一个名为“Abc”的员工详细信息
使用“网格视图”查看节点详细信息。如果我们观察结果,它只返回一个名为“Abc”的员工详细信息。


例如:

此示例演示如何在MATCH Command中的CQL WHERE子句中使用多个条件与布尔运算符,以根据员工名称检索员工详细信息。


步骤1 -打开Neo4j数据浏览器


根据员工名称检索员工详细信息


步骤2 -在数据浏览器上键入以下命令
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 -点击“执行”按钮并观察结果。


它返回4个员工节点详细信息
如果我们观察结果,它返回4个员工节点详细信息。


步骤4 -在数据浏览器上键入以下命令

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-点击“执行”按钮并观察结果。


返回两个名为“Abc”或“Xyz”的员工详细信息。
使用“网格视图”查看节点详细信息。如果我们观察到结果,它只返回两个名为“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.语法元素描述
1MATCH,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


使用WHERE子句创建两个现有节点之间的关系

步骤3 -点击“执行”按钮并观察结果。


客户节点在我们的Neo4J数据库中可用
如果我们观察结果,它表明我们所需的客户节点在我们的Neo4J数据库中可用。


步骤4 -在数据浏览器上键入以下命令,验证我们的Neo4J数据库中是否存在所需的CreditCard节点。

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


验证我们的Neo4J数据库中是否存在所需的CreditCard节点。

步骤5 -点击“执行”按钮并观察结果。


CreditCard节点在我们的Neo4J数据库中可用
如果我们观察结果,它表明我们所需的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


创建客户和CreditCard节点之间的关系


步骤7 -点击“执行”按钮并观察结果。


单击关系并在单独的窗口中观察其属性


在两个现有节点之间创建了一个NEW关系
现在我们通过使用Neo4J CQL WHERE子句在两个现有节点之间创建了一个NEW关系。