distinct()(去重取值)

最后更新:2026-10-09

distinct()(去重取值)

distinct()返回集合中指定字段的所有不重复值,例如`db.users.distinct('address.city')`。它只返回去重后的值数组,不返回完整文档。常用于枚举分类、统计可选值等场景。注意:对没有索引的大字段去重可能性能较差,返回结果也受单个BSON文档16MB上限约束。

分类读取
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

db.<集合>.distinct(<字段>, <过滤条件>)

⚙️ 参数

字段要去重的字段名,支持点号路径如'address.city'。
过滤条件可选。先按条件过滤再取值。

返回值:去重后的值数组;无匹配时为空数组。

▶ 示例

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

// distinct:列出所有用户所在的城市
const cities = db.users.distinct(
  'address.city',
  { age: { $gt: 18 } }
)
cities

运行结果:

[ 'Beijing', 'Shanghai', 'Guangzhou' ]

📌 注意事项

更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Qdistinct和聚合里的$group去重有什么区别?
Adistinct()只返回去重值数组;聚合的$group可以同时做计数、求和等更多统计,能力更强。
Qdistinct能对嵌套字段去重吗?
A可以,字段名用点号路径,例如db.users.distinct('address.city')。
Qdistinct结果太多会报错吗?
A返回值超出16MB BSON限制会报错,此时改用聚合管道配合$group分批处理。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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