布尔运算符
布尔运算符用于组合或评估逻辑条件。Cypher® 包含以下布尔运算符
-
合取:
AND -
析取:
OR -
异或:
XOR -
否定:
NOT
| a | b | a AND b |
a OR b |
a XOR b |
NOT a |
|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
示例图
以下图表用于下方的示例
要重建该图,请在空的 Neo4j 数据库中运行以下查询
CREATE (alice:Person {name:'Alice', age: 65, role: 'Project manager', email: 'alice@company.com'}),
(cecil:Person {name: 'Cecil', age: 25, role: 'Software developer', email: 'cecil@private.se'}),
(cecilia:Person {name: 'Cecilia', age: 31, role: 'Software developer'}),
(charlie:Person {name: 'Charlie', age: 61, role: 'Security engineer'}),
(daniel:Person {name: 'Daniel', age: 39, role: 'Director', email: 'daniel@company.com'}),
(eskil:Person {name: 'Eskil', age: 39, role: 'CEO', email: 'eskil@company.com'})
示例
AND 运算符MATCH (n:Person)
WHERE n.age > 30 AND n.role = 'Software developer'
RETURN n.name AS name, n.age AS age, n.role AS role
| 名称 (name) | age | role(角色) |
|---|---|---|
|
|
|
行:1 |
||
OR 运算符MATCH (n:Person)
WHERE n.age < 30 OR n.role = 'Software developer'
RETURN n.name AS name, n.age AS age, n.role AS role
| 名称 (name) | age | role(角色) |
|---|---|---|
|
|
|
|
|
|
行:2 |
||
XOR 运算符MATCH (n:Person)
WHERE n.age > 30 XOR n.role = 'Software developer'
RETURN n.name AS name, n.age AS age, n.role AS role
| 名称 (name) | age | role(角色) |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
行:5 |
||
NOT 运算符MATCH (n:Person)
WHERE NOT n.age = 39
RETURN n.name AS name, n.age AS age
| 名称 (name) | age |
|---|---|
|
|
|
|
|
|
|
|
行:4 |
|
|
运算符优先级
运算符优先级定义了在没有括号的情况下 Cypher 如何对表达式进行分组。在谓词中,以下顺序具有相关性(优先级越高越先执行)
这意味着除非添加括号,否则 示例
如果有疑问,请添加括号以明确预期的分组方式。 |
MATCH (n:Person)
WHERE n.role = 'Software developer' XOR (n.age > 60 AND n.role = 'Security engineer') OR NOT (n.role = 'Director' OR n.name = 'Eskil')
RETURN n.name AS name, n.age AS age, n.role AS role
| 名称 (name) | age | role(角色) |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
行:4 |
||