You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j中ALL()谓词函数的行为疑问及正确性验证

Neo4j 5.26.2中ALL()谓词函数对空集合的行为说明

结论

你遇到的查询(3)和(4)返回全部3条结果的行为,完全符合Neo4j官方规范。

核心原理:空真(Vacuous Truth)

ALL()作为全称量词谓词,其语义是**"集合中的每一个元素都满足指定条件"**。在数理逻辑中,当集合为空时,不存在任何违反条件的元素,因此该谓词会默认返回true——这一规则被称为"空真",Neo4j严格遵循这一逻辑定义。

针对你的查询的具体分析

查询(3)

MATCH(p:Parent)
WHERE ALL(x IN p.empty_array WHERE x = 2)
RETURN p.id, p.empty_array

p.empty_array是预先定义的空数组,没有任何元素需要验证x = 2的条件,因此ALL(...)直接返回true,所有3个Parent节点都被匹配返回。

查询(4)

MATCH(p:Parent)--(c)
WITH p, COLLECT(c.does_not_exist) AS does_not_exists
WHERE ALL(x IN does_not_exists WHERE x = 2)
RETURN p.id, does_not_exists

c.does_not_exist是不存在的属性,执行COLLECT()后得到空数组。基于空真规则,ALL(...)返回true,因此所有Parent节点都被返回。

补充验证

你可以通过以下语句直接验证空数组的ALL()行为:

// 测试空数组的ALL()结果
RETURN ALL(x IN [] WHERE x = 2) AS result;
// 结果为true

内容的提问来源于stack exchange,提问作者norihide.shimatani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 03:57:44