$addToSet(去重添加)

最后更新:2026-10-09

$addToSet(去重添加)

$addToSet 向数组字段添加元素,仅当元素不存在时才添加,保证数组内无重复值。`{ $addToSet: { tags: 'mongodb' } }`。要一次添加多个元素需配合 $each。重复判断基于完整值相等(嵌套文档逐字段比较)。适合维护标签、关注列表等唯一集合。

分类更新数组
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $addToSet: { <数组字段>: <值> } }

⚙️ 参数

数组字段要添加元素的数组字段名。
值要添加的值,已存在则跳过。

返回值:更新结果文档

▶ 示例

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

// $addToSet:添加标签(已存在则跳过)
db.articles.updateOne(
  { _id: 1 },
  { $addToSet: { tags: 'mongodb' } }
)

// 批量添加需 $each
db.articles.updateOne(
  { _id: 1 },
  { $addToSet: { tags: { $each: ['database', 'nosql'] } } }
)

运行结果:

// tags 中已存在 mongodb 时不重复添加;database 与 nosql 依次追加

📌 注意事项

📚 相关教程

❓ 常见问题

Q$addToSet 和 $push 的区别?
A$addToSet 去重,$push 直接追加可重复。
Q怎么一次添加多个值?
A配合 $each:{ $addToSet: { tags: { $each: ['a', 'b'] } } }。
Q$addToSet 能加嵌套文档吗?
A能,按整个文档是否相等判断去重。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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