$in(在数组中)

最后更新:2026-10-09

$in(在数组中)

$in 选择字段值等于指定数组中任意一个值的文档,是 $or 的便捷简写。`{ age: { $in: [18, 21, 30] } }` 匹配 age 为 18、21 或 30 的文档。它比多个 $eq 或 $or 更高效(走索引),且对数组字段有特殊语义(元素匹配)。

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

📝 语法

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

▶ 示例

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

// $in:匹配 age 为 18、21 或 30
db.users.find({ age: { $in: [18, 21, 30] } })

运行结果:

// 返回 age 为上述任一值的文档

📌 注意事项

📚 相关教程

❓ 常见问题

Q$in 和 $or 哪个快?
A$in 更快。单字段多值时 $in 只需一次索引查找,而 $or 需要多次索引分支合并,且 $in 支持正则。
Q$in 和 $or 的多个 $eq 等价吗?
A功能等价,但 $in 更简洁且性能更好(一次索引范围扫描)。此外 $in 还可以配合 $type 或正则表达式匹配多种形态。
Q$in 对数组字段如何工作?
A只要数组中有任意元素等于 $in 列表中的任一值即匹配。这与 $elemMatch 配合 $in 的效果相同,但写法更简洁。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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