$addToSet(去重数组累加器)

最后更新:2026-10-09

$addToSet(去重数组累加器)

$addToSet 是累加器,在 $group 中把组内文档的表达式结果加入数组并自动去重,重复值只保留一个。与 $push 类似但保证元素唯一。适合收集分类标签、客户列表等需要去重的数据。数组元素顺序不保证。

分类累加器
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $group: { _id: <键>, tags: { $addToSet: "$字段" } } }

返回值:去重后的表达式结果数组

▶ 示例

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

// $addToSet:收集每位客户买过的不同商品
db.orders.aggregate([
  { $group: { _id: '$cust_id', items: { $addToSet: '$item' } } }
])

运行结果:

{ "_id": "A123", "items": ["Pen", "Book"] }

📌 注意事项

📚 相关教程

❓ 常见问题

Q$addToSet 和 $push 有什么区别?
A$push 保留重复,$addToSet 去重。
Q顺序有保证吗?
A没有,数组元素顺序不保证,需要顺序要自行排序。
Q能对数组字段元素去重吗?
A不能直接对数组元素去重,$addToSet 按整个数组值比较;想展平先 $unwind。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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