定义
返回一群组文档中大量值中唯一元素的大量。
8.1版本新增。
$setUnion累加器可在以下阶段使用:
注意
消歧
本页描述了用作累加器时的 $setUnion。累加器返回一群组输入文档的单个聚合值。
您还可以在其他上下文中使用 $setUnion:
$setUnion (expression),它将两个或多个数组组合成一个由唯一元素组成的大量。$setUnion (window function),用于在$setWindowFields阶段返回窗口中大量值中唯一元素的单个大量。
语法
{ $setUnion: "<array field>" }
行为
$setUnion 对数组执行设立操作,将数组视为集合。如果大量包含重复条目,$setUnion 将忽略重复条目。 $setUnion 忽略元素的顺序。
$setUnion 过滤掉结果中的重复项,以输出仅包含唯一条目的大量。输出大量中元素的顺序未指定。
如果设立包含嵌套大量元素,则 $setUnion 不会降级到嵌套大量,而是在顶层计算大量。
要了解 $setUnion 如何处理嵌套大量元素,请参阅 $setUnion (expression) 部分中的示例。
为 null 或解析为 null 的参数包含在结果中。结果不包含引用缺失字段的参数。
例子
本页上的示例使用 sample_mflix 数据集中的数据。有关如何将此数据集加载到自管理MongoDB 部署中的详细信息,请参阅加载样本数据集。如果对示例数据库进行了任何修改,则可能需要删除并重新创建数据库才能运行本页上的示例。
此示例使用 $setUnion 返回三位特定导演的不同类型:
db.movies.aggregate( [ { $unwind: "$directors" }, { $match: { directors: { $in: [ "Christopher Nolan", "Sofia Coppola", "Spike Lee" ] } } }, { $group: { _id: "$directors", movieCount: { $sum: 1 }, genres: { $setUnion: "$genres" } } }, { $sort: { _id: 1 } } ] )
上述管道:
限制
$setUnion仅支持数组和解析为大量的表达式。