![精通Neo4j](https://wfqqreader-1252317822.image.myqcloud.com/cover/113/47216113/b_47216113.jpg)
3.4.1 断言函数
断言(Predicate)函数是对给定的输入返回true或者false的布尔函数,它们主要用于查询WHERE的部分过滤子图。Predicate图例如图3-23所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P203_92524.jpg?sign=1739566586-JHCXelaaE7WQzwE6tedKNAUB1AB5AAs7-0-b96df903b669a0c01f099e321d8f7e21)
图3-23 Predicate图例
3.4.1.1 all()
判断是否一个断言适用于列表中的所有元素。
语法:all(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:用于断言中的变量。
● predicate:用于测试列表中所有元素的断言。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P203_102830.jpg?sign=1739566586-YL1xlKgyp9LCcUoOoR0AAE8ScccXPj8F-0-f4dd57175888b0c37807b693d7934465)
返回路径中的所有节点都有一个至少大于30的age属性。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P203_101955.jpg?sign=1739566586-bJWqmaTCMNOM2FO2l6UAwLKmmpEIzBkv-0-20777c2460d03ce1c820024f3a0f2e53)
3.4.1.2 any()
判断是否一个断言至少适用于列表中的一个元素。
语法:any(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:用于断言中的变量。
● predicate:用于测试列表中所有元素的断言。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P204_102831.jpg?sign=1739566586-NRxzzuBc3LoE8mnDOnGJZVSxWQU4RFw8-0-86545715aca1ffe118741f6e47df78a7)
返回路径中的所有节点的array数组属性中至少有一个值为one。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P204_101959.jpg?sign=1739566586-qLGobCXr7NoqlbTDQ5PeDX5CJ4vODOw4-0-768e1e7b682e54e8d4fe605cb854d900)
3.4.1.3 none()
如果断言不适用于列表中的任何元素,则返回true。
语法:none(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:用于断言中的变量。
● predicate:用于测试列表中所有元素的断言。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P204_102832.jpg?sign=1739566586-Mc7I7ZQRWaXR1XHwBBke5NyjltTM5A0s-0-a361896bc94bdd388cc8bb42369fbe3c)
返回的路径中没有节点的age属性值为25。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P204_101963.jpg?sign=1739566586-Vn9hEkq5HsdWBpbYbfqxvi9NvcedQDLO-0-6a3812f834a116f8bcbf340b3f204380)
3.4.1.4 single()
如果断言只适用于列表中的某一个元素,则返回true。
语法:single(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:用于断言中的变量。
● predicate:用于测试列表中所有元素的断言。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P205_102839.jpg?sign=1739566586-vJSaMcqiRO90GmOYOQEAEa0y9YdMyuGn-0-9a1d1d7761c5af6521a5a1ec19958614)
每条返回的路径中只有一个节点的eyes属性值为blue。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P205_101967.jpg?sign=1739566586-Fa3PwSaebdMDpmQF1PRQ8C6tySXYl1qO-0-0a683636bc657490a03fb257b5606d36)
3.4.1.5 exists()
如果数据库中存在该模式或者节点中存在该属性时,就返回true。
语法:exists(pattern-or-property)
参数:
● pattern-or-property:模式或者属性(以variable.prop的形式)。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P205_102840.jpg?sign=1739566586-b7svvniiwWxoNf27qW9pbHJIdwIVtXDv-0-0936955829da53e5397563649bdac2f8)
本查询返回了所有节点的name属性和一个表示是否已婚的true/false值。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P205_101971.jpg?sign=1739566586-XA0M2edYgq3DyuHkB7WXe2KX5NxrITdY-0-e75fcd1d566c9ce88f2911f4cb276871)