$ifNull(空值兜底)
最后更新:2026-10-09
$ifNull(空值兜底)
$ifNull 在表达式结果为 null 或字段缺失时返回替换值,是处理空数据最常用的操作符。典型场景包括给缺失的简介提供默认文案、把 null 价格替换为 0 参与计算。MongoDB 4.4 起支持多参数:依次返回第一个非 null 的值。它只对 null 和缺失生效,空字符串和空数组不会触发兜底,需要时配合 $eq 或 $size 判断。
| 分类 | 集合·条件·转换 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $ifNull: [ <表达式>, <替换值> ] }
⚙️ 参数
| 表达式 | 要检查的表达式。 |
|---|---|
| 替换值 | 表达式为 null 或缺失时返回的值。 |
返回值:表达式非 null 时返回原值,否则返回替换值
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $ifNull:简介为空时给默认文案
db.users.aggregate([
{ $project: {
bio: { $ifNull: ['$bio', '这位用户很低调'] }
} }
])
运行结果:
{ '_id': 1, 'bio': '这位用户很低调' }
📌 注意事项
- 缺失字段也会触发兜底,不会报错
- 空字符串和空数组不触发,需要时先 $eq/$size 判断
- 4.4+ 支持多参数:{ $ifNull: ['$a', '$b', '默认'] } 返回第一个非 null
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q字段不存在会触发吗?
A会,缺失等同 null,返回替换值。
Q空字符串会触发兜底吗?
A不会,只对 null 和缺失生效。
Q多个备选值怎么用?
A4.4+ 直接多参数,返回第一个非 null 的值。