Neo4j CQL - WHERE子句
像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数据浏览器
步骤2 -在数据浏览器上键入以下命令
MATCH (emp:Employee) RETURN emp.empid,emp.name,emp.salary,emp.deptno
步骤3 -点击“执行”按钮并观察结果。
步骤4 -在数据浏览器上键入以下命令
MATCH (emp:Employee) WHERE emp.name = 'Abc' RETURN emp
例如:
此示例演示如何在MATCH Command中的CQL WHERE子句中使用多个条件与布尔运算符,以根据员工名称检索员工详细信息。
步骤1 -打开Neo4j数据浏览器
MATCH (emp:Employee) RETURN emp.empid,emp.name,emp.salary,emp.deptno
步骤3 -点击“执行”按钮并观察结果。
步骤4 -在数据浏览器上键入以下命令
MATCH (emp:Employee) WHERE emp.name = 'Abc' OR emp.name = 'Xyz' RETURN emp
步骤5-点击“执行”按钮并观察结果。
使用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 -点击“执行”按钮并观察结果。
步骤4 -在数据浏览器上键入以下命令,验证我们的Neo4J数据库中是否存在所需的CreditCard节点。
MATCH (cc:CreditCard) RETURN cc.id,cc.number,cc.expiredate,cc.cvv
步骤5 -点击“执行”按钮并观察结果。
步骤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
更多建议: