布尔运算符

布尔运算符用于组合或评估逻辑条件。Cypher® 包含以下布尔运算符

  • 合取:AND

  • 析取:OR

  • 异或:XOR

  • 否定:NOT

布尔运算符真值表
a b a AND b a OR b a XOR b NOT a

null

null

null

null

null

null

null

null

null

null

null

null

null

null

null

null

null

null

null

null

示例图

以下图用于下面的示例

predicate operators

要重新创建图,请在空的 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'})

示例

示例 1. 布尔运算符
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
结果
姓名 年龄 角色

“Cecilia”

31

“软件开发人员”

行数: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
结果
姓名 年龄 角色

“Cecilia”

31

“软件开发人员”

“Cecil”

25

“软件开发人员”

行数: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
结果
姓名 年龄 角色

“Alice”

65

“项目经理”

“Cecil”

25

“软件开发人员”

“Charlie”

61

“安全工程师”

“Eskil”

39

“CEO”

“Daniel”

39

“总监”

行数:5

NOT 运算符
MATCH (n:Person)
WHERE NOT n.age = 39
RETURN n.name AS name, n.age AS age
结果
姓名 年龄

“Alice”

65

“Cecil”

25

“Cecilia”

31

“Charlie”

61

行数:4

组合布尔运算符
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
结果
姓名 年龄 角色

“Alice”

65

“项目经理”

“Cecil”

25

“软件开发人员”

“Cecilia”

31

“软件开发人员”

“Charlie”

61

“安全工程师”

行数:4

© . All rights reserved.