精通Neo4j
上QQ阅读APP看书,第一时间看更新

3.4.1 断言函数

断言(Predicate)函数是对给定的输入返回true或者false的布尔函数,它们主要用于查询WHERE的部分过滤子图。Predicate图例如图3-23所示。

图3-23 Predicate图例

3.4.1.1 all()

判断是否一个断言适用于列表中的所有元素。

语法:all(variable IN list WHERE predicate)

参数:

● list:返回列表的表达式。

● variable:用于断言中的变量。

● predicate:用于测试列表中所有元素的断言。

查询:

返回路径中的所有节点都有一个至少大于30的age属性。

结果:

3.4.1.2 any()

判断是否一个断言至少适用于列表中的一个元素。

语法:any(variable IN list WHERE predicate)

参数:

● list:返回列表的表达式。

● variable:用于断言中的变量。

● predicate:用于测试列表中所有元素的断言。

查询:

返回路径中的所有节点的array数组属性中至少有一个值为one。

结果:

3.4.1.3 none()

如果断言不适用于列表中的任何元素,则返回true。

语法:none(variable IN list WHERE predicate)

参数:

● list:返回列表的表达式。

● variable:用于断言中的变量。

● predicate:用于测试列表中所有元素的断言。

查询:

返回的路径中没有节点的age属性值为25。

结果:

3.4.1.4 single()

如果断言只适用于列表中的某一个元素,则返回true。

语法:single(variable IN list WHERE predicate)

参数:

● list:返回列表的表达式。

● variable:用于断言中的变量。

● predicate:用于测试列表中所有元素的断言。

查询:

每条返回的路径中只有一个节点的eyes属性值为blue。

结果:

3.4.1.5 exists()

如果数据库中存在该模式或者节点中存在该属性时,就返回true。

语法:exists(pattern-or-property)

参数:

● pattern-or-property:模式或者属性(以variable.prop的形式)。

查询:

本查询返回了所有节点的name属性和一个表示是否已婚的true/false值。

结果: