$anyElementTrue(判断数组是否存在真值元素)
最后更新:2026-10-09
$anyElementTrue(判断数组是否存在真值元素)
$anyElementTrue 判断数组中是否至少有一个真值元素,返回布尔值。空数组返回 false。典型场景包括判断用户是否有任一收货地址、订单是否有任何优惠生效。它是 $allElementsTrue 的对偶操作符:存在真值即为真。元素真值判定规则与 $allElementsTrue 一致(0、空字符串、null、false 为假)。
| 分类 | 集合·条件·转换 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $anyElementTrue: [ <数组> ] }
⚙️ 参数
| 数组 | 要检查的数组。 |
|---|
返回值:存在真值元素返回 true;空数组返回 false
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $anyElementTrue:是否存在 VIP 标记
db.users.aggregate([
{ $project: {
isVip: { $anyElementTrue: ['$vipFlags'] }
} }
])
运行结果:
{ '_id': 1, 'isVip': true }
{ '_id': 2, 'isVip': false }
📌 注意事项
- 空数组返回 false
- 与 $allElementsTrue 组合可实现全真/任一真的完整判断
- 真值规则:0、空字符串、null、false 为假
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q空数组返回什么?
A返回 false,与 $allElementsTrue 相反。
Q与 $allElementsTrue 什么关系?
A互为对偶:一个是存在真值即真,一个是全部为真才真。
Q能直接传布尔字段数组吗?
A能,布尔数组直接判定;对象数组需先 $map 提取字段。