$unionWith (União)
Última atualização: 2026-10-09
$unionWith (União)
$unionWith mescla os resultados acumulados do pipeline com documentos de outra coleção (ou da mesma), opcionalmente pré-processando essa coleção com um sub-pipeline. A saída padrão é a união sem deduplicação. Ótimo para combinar coleções em um único fluxo de relatório; documentos com formatos diferentes simplesmente coexistem.
| Categoria | Avançado e Diagnóstico |
|---|---|
| Versão do MongoDB | 4.4+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $unionWith: { coll: "<collection>", pipeline: [ <sub-pipeline> ] } }
⚙️ Parâmetros
| coll | Coleção de destino com a qual unir. |
|---|---|
| pipeline | Subpipeline opcional que pré-processa a coleção de destino. |
Retorno:Fluxo de documentos mesclado de ambas as fontes
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $unionWith: mescla q2 em q1, filtrado
db.q1.aggregate([
{ $unionWith: { coll: 'q2', pipeline: [{ $match: { active: true } }] } }
])
Saída:
// Resultados de q1 mais documentos ativos de q2
📌 Notas
- Não há deduplicação; documentos idênticos podem aparecer duas vezes
- O sub-pipeline pode aplicar $match, $project etc. na coleção de destino
- Formatos de campos diferentes não impedem a mesclagem
🏷️ Tags Relacionados
💡 Casos Relacionados
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
Q$unionWith deduplica?
ANão. Ele une as duas fontes; duplicatas podem aparecer.
QO sub-pipeline pode ordenar?
ASim, com estágios normais, exceto $out, $merge e $facet.
QEle pode unir a mesma coleção duas vezes?
ASim, aponte coll para a coleção atual para uma autounião.