$exists(存在性)

最后更新:2026-10-09

$exists(存在性)

$exists 按字段是否存在筛选文档。`{ $exists: true }` 匹配字段存在(值非 null)的文档;`{ $exists: false }` 匹配字段不存在的文档。它是处理「字段缺失」问题的核心工具,常与 $ne、$gt 组合,弥补这些操作符不匹配缺失字段的局限。

分类元素与求值
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ <字段>: { $exists: <boolean> } }

⚙️ 参数

字段要检查是否存在的文档字段名。
booleantrue 匹配字段存在,false 匹配字段不存在。

返回值:匹配的文档游标

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// $exists:查有邮箱的用户
// 字段存在且值非 null 才匹配
db.users.find({ email: { $exists: true } })

// 没有邮箱字段的用户
db.users.find({ email: { $exists: false } })

运行结果:

// 前者返回有 email 字段的用户;后者返回完全没有该字段的用户

📌 注意事项

📚 相关教程

❓ 常见问题

Q$exists: true 会匹配 null 值吗?
A不会。字段存在但值为 null 时不匹配 $exists: true;可用 $type: 10 或 $eq: null 处理。
Q$exists 和 $ne 怎么配合?
A{ $ne: 值, $exists: true } 表示「字段存在且不等于某值」,避免 $ne 跳过缺失字段。
Q怎么查数组字段是否存在?
A同样用 { $exists: true },数组字段存在即匹配,空数组也视为存在。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏