对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

$addToSet(累加器操作符)

$addToSet

返回跨群组中的文档计算的表达式的唯一值大量。大量中元素的顺序未指定。

$addToSet 可在以下阶段使用:

注意

消歧

本页描述了用作累加器时的 $addToSet。累加器返回单个聚合值,例如一群组输入文档的总和、最大值或最小值。

您还可以在其他上下文中使用 $addToSet:

{ $addToSet: <expression> }

有关表达式的更多信息,请参阅表达式。

如果表达式的值是一个大量,$addToSet 会将整个大量作为单个元素追加。

如果该表达式的值为一个文档,则当数组中的另一文档与要添加的文档完全匹配时,MongoDB 便确定该文档为重复文档。具体而言,现有文档包含顺序完全相同的相同字段和值。

本页上的示例使用 sample_mflix 数据集中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载样本数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。

以下操作按导演对电影进行分组,并使用 $addToSet累加器收集每位导演拍摄过的独特类型。为了提高可读性,管道将结果限制为按字母顺序排列的前五位导演。

db.movies.aggregate( [
{
$unwind: "$directors"
},
{
$unwind: "$genres"
},
{
$group: {
_id: "$directors",
genres: { $addToSet: "$genres" }
}
},
{
$sort: { _id: 1 }
},
{
$limit: 5
}
] )

此管道返回以下结果:

[
{ _id: 'A. Dean Bell', genres: [ 'Crime', 'Drama' ] },
{ _id: 'A. Karunakaran', genres: [ 'Romance' ] },
{ _id: 'A. Vanichkin', genres: [ 'Animation', 'Fantasy' ] },
{ _id: 'A.J. Edwards', genres: [ 'Biography', 'Drama', 'History' ] },
{
_id: 'A.R. Murugadoss',
genres: [ 'Drama', 'Sci-Fi', 'Thriller', 'Action', 'Mystery' ]
}
]
给本页内容打分