$nin(不在数组中)

最后更新:2026-10-09

$nin(不在数组中)

$nin 选择字段值不等于给定数组中任何一个值的文档,是 $in 的否定形式。`{ age: { $nin: [18, 21] } }` 匹配年龄既不是 18 也不是 21 的用户。注意两点:与 $ne 类似,不匹配字段缺失的文档;对数组字段,只要任一元素不在给定数组中即匹配。

分类比较
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ <字段>: { $nin: [ <值1>, <值2>, ... ] } }

⚙️ 参数

字段要匹配的文档字段名。
值数组要排除的值列表,字段值不等于其中任何一个。

返回值:匹配的文档游标

▶ 示例

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

// $nin:排除年龄 18 和 21 的用户
db.users.find({ age: { $nin: [18, 21] } })

// 字段缺失的文档不会被返回
db.users.find({ age: { $nin: [18] } })

运行结果:

// 返回 age 既不是 18 也不是 21 的用户;字段缺失的用户不返回

📌 注意事项

📚 相关教程

❓ 常见问题

Q$nin 和 $ne 有什么区别?
A$ne 只排除单个值,$nin 排除一组值;语义都是「不等于」,$nin 是 $ne 的批量形式。
Q$nin 会返回字段不存在的文档吗?
A不会。与 $ne 一样,$nin 只匹配字段存在且值不在数组中的文档。
Q$nin 对数组字段怎么匹配?
A只要数组中有一个元素不在给定数组内即匹配,注意与「整个数组不在其中」不同。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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