Null(空值)
最后更新:2026-10-09
Null(空值)
Null表示字段值为空,与字段不存在(missing)是两种不同状态。查询`{ field: null }`会同时匹配值为null和字段不存在的文档;要区分必须组合`$exists`。建议应用层用null表示「已设值为空」,字段缺失表示「从未设置」。
| 分类 | BSON 类型 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ field: null }
db.users.find({ field: null })
db.users.find({ field: { $eq: null, $exists: true } })
返回值:空值本身;查询时返回匹配文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// Null:空值与缺失字段的区分
use shop
db.users.find({ phone: null })
db.users.find({ phone: { $eq: null, $exists: true } })
运行结果:
// 第一条返回phone为空或缺失的用户;第二条仅返回phone为null的用户
📌 注意事项
- null和missing是两种状态,查询语义不同
- { field: null }等价于{ field: { $eq: null } },包含缺失字段
- 空字符串''是字符串值,与null互不匹配
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q查询null会返回字段不存在的文档吗?
A会。{ field: null }匹配值为null和字段缺失两类文档。
Qnull和空字符串''一样吗?
A不一样。''是字符串值,null是空值,两者查询互不匹配。
Q怎么只查字段为null的文档?
A用{ field: { $eq: null, $exists: true } },$exists排除缺失字段。