谓词函数
示例图
以下图用于下面的示例
要重新创建它,请在空的 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 |
LIST
的 all()
WITH [] as emptyList
RETURN all(i in emptyList WHERE true) as allTrue, all(i in emptyList WHERE false) as allFalse
allTrue | allFalse |
---|---|
|
|
行数:1 |
any()
语法 |
|
||
描述 |
如果谓词对给定 |
||
参数 |
名称 |
类型 |
描述 |
|
|
可在 |
|
|
|
此列表中的所有元素都必须使谓词成立,函数才会返回 |
|
|
|
针对给定列表中所有项进行测试的谓词。 |
|
返回 |
|
|
如果 |
如果 |
MATCH (p:Person)
WHERE any(nationality IN p.nationality WHERE nationality = 'American')
RETURN p
此查询返回具有 nationality
属性值为 American
的 Person
节点
p |
---|
|
|
行数:2 |
LIST
的 any()
WITH [] as emptyList
RETURN any(i IN emptyList WHERE true) as anyTrue, any(i IN emptyList WHERE false) as anyFalse
anyTrue | anyFalse |
---|---|
|
|
行数:1 |
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 |
LIST
的 none()
WITH [] as emptyList
RETURN none(i IN emptyList WHERE true) as noneTrue, none(i IN emptyList WHERE false) as noneFalse
noneTrue | noneFalse |
---|---|
|
|
行数:1 |
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 |
LIST
的 single()
WITH [] as emptyList
RETURN single(i IN emptyList WHERE true) as singleTrue, single(i IN emptyList WHERE false) as singleFalse
singleTrue | singleFalse |
---|---|
|
|
行数:1 |