谓词函数
示例图
以下图用于下面的示例
要重新创建它,请针对空的 Neo4j 数据库运行以下查询
CREATE
(keanu:Person {name:'Keanu Reeves', age:58, nationality:'Canadian'}),
(carrie:Person {name:'Carrie Anne Moss', age:55, nationality:'American'}),
(liam:Person {name:'Liam Neeson', age:70, nationality:'Northern Irish'}),
(guy:Person {name:'Guy Pearce', age:55, nationality:'Australian'}),
(kathryn:Person {name:'Kathryn Bigelow', age:71, nationality:'American'}),
(jessica:Person {name:'Jessica Chastain', age:45, address:''}),
(theMatrix:Movie {title:'The Matrix'}),
(keanu)-[:KNOWS]->(carrie),
(keanu)-[:KNOWS]->(liam),
(keanu)-[:KNOWS]->(kathryn),
(kathryn)-[:KNOWS]->(jessica),
(carrie)-[:KNOWS]->(guy),
(liam)-[:KNOWS]->(guy),
(keanu)-[:ACTED_IN]->(theMatrix),
(carrie)-[:ACTED_IN]->(theMatrix)
all()
语法 |
|
||
描述 |
如果谓词对给定 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可以在 |
|
|
|
谓词必须对该列表中的所有元素成立,函数才能返回 |
|
|
|
对给定列表中的所有项目进行测试的谓词。 |
|
返回值 |
|
如果 |
MATCH p = (a)-[*]->(b)
WHERE
a.name = 'Keanu Reeves'
AND b.name = 'Guy Pearce'
AND all(x IN nodes(p) WHERE x.age < 60)
RETURN p
返回路径中的所有节点都将具有 age
属性,其值为小于 60
。
p |
---|
|
行数:1 |
any()
语法 |
|
||
描述 |
如果谓词对给定 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可以在 |
|
|
|
谓词必须对该列表中的所有元素成立,函数才能返回 |
|
|
|
对给定列表中的所有项目进行测试的谓词。 |
|
返回值 |
|
如果 |
MATCH (p:Person)
WHERE any(nationality IN p.nationality WHERE nationality = 'American')
RETURN p
该查询返回 nationality
属性值为 American
的 Person
节点。
p |
---|
|
|
行数:2 |
exists()
语法 |
|
||
描述 |
如果图中存在模式的匹配项,则返回 true。 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要验证其存在的模式。 |
|
返回值 |
|
如果 |
要检查属性是否不为 |
MATCH (p:Person)
RETURN
p.name AS name,
exists((p)-[:ACTED_IN]->()) AS has_acted_in_rel
该查询返回每个 Person
节点的 name
属性,以及一个布尔值(true
或 false
),指示这些节点在图中是否具有 ACTED_IN
关系。
name | has_acted_in_rel |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
行数:6 |
有关 |
isEmpty()
语法 |
|
||
描述 |
检查 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要检查是否为空的值。 |
|
返回值 |
|
MATCH (p:Person)
WHERE NOT isEmpty(p.nationality)
RETURN p.name, p.nationality
该查询返回图中具有设置 nationality
属性值的每个 Person
节点(即,除 Jessica Chastain
之外的所有 Person
节点)。
p.name | p.nationality |
---|---|
|
|
|
|
|
|
|
|
|
|
行数:5 |
MATCH (n)
WHERE isEmpty(properties(n))
RETURN n
因为示例图不包含空节点,所以没有返回任何内容。
(no changes, no records)
MATCH (p:Person)
WHERE isEmpty(p.address)
RETURN p.name AS name
返回每个具有空 STRING
address
属性的节点的 name
属性。
name |
---|
|
行数:1 |
如果将 |
none()
语法 |
|
||
描述 |
如果谓词对给定 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可以在 |
|
|
|
谓词必须对该列表中的所有元素成立,函数才能返回 |
|
|
|
对给定列表中的所有项目进行测试的谓词。 |
|
返回值 |
|
如果 |
MATCH p = (n)-[*]->(b)
WHERE
n.name = 'Keanu Reeves'
AND none(x IN nodes(p) WHERE x.age > 60)
RETURN p
返回路径中的任何节点都没有 age
属性,其值大于 60
。
p |
---|
|
|
行数:2 |
single()
语法 |
|
||
描述 |
如果谓词对给定 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可以在 |
|
|
|
谓词必须对该列表中的所有元素成立,函数才能返回 |
|
|
|
对给定列表中的所有项目进行测试的谓词。 |
|
返回值 |
|
如果 |
MATCH p = (n)-->(b)
WHERE
n.name = 'Keanu Reeves'
AND single(x IN nodes(p) WHERE x.nationality = 'Northern Irish')
RETURN p
在每个返回的路径中,恰好有一个节点具有 nationality
属性值 Northern Irish
。
p |
---|
|
行数:1 |