$unionWith(集合并集)
最后更新:2026-10-09
$unionWith(集合并集)
$unionWith 把管道到当前阶段的累计结果与另一集合(或同一集合)的文档合并输出,可用子管道对目标集合预处理。默认不去重,输出是两个来源的并集。适合合并多集合数据、统一报表。字段结构不同的文档会原样共存。
| 分类 | 高级与诊断 |
|---|---|
| MongoDB 版本 | 4.4+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $unionWith: { coll: "<集合名>", pipeline: [ <子管道> ] } }
⚙️ 参数
| coll | 要合并的目标集合名。 |
|---|---|
| pipeline | 对目标集合预处理的子管道,可省略。 |
返回值:两个来源合并后的文档流
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $unionWith:合并季度成绩并过滤
db.q1.aggregate([
{ $unionWith: { coll: 'q2', pipeline: [{ $match: { active: true } }] } }
])
运行结果:
// q1 的结果加 q2 中 active 的文档
📌 注意事项
- 不去重,相同内容可能出现多次
- 子管道可对目标集合先做 $match、$project 等预处理
- 字段结构不同不影响合并
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$unionWith 会去重吗?
A不会,输出是两个来源的并集,相同内容可能出现多次。
Q子管道里能排序吗?
A能,子管道可使用除 $out、$merge、$facet 外的普通阶段。
Q能合并同一集合两次吗?
A能,coll 可以指向当前集合,形成自并集。