$out (Saída)
Última atualização: 2026-10-09
$out (Saída)
$out grava os resultados do pipeline em uma coleção nomeada, substituindo todo o conteúdo anterior; o destino é criado automaticamente se não existir. Ele deve ser o estágio final e não pode ser combinado com $merge. Ele bloqueia a coleção durante a gravação e substitui completamente os dados, então serve para relatórios offline e tabelas de cache. $out ganhou suporte a gravação entre bancos de dados no MongoDB 4.4.
| Categoria | Avançado e Diagnóstico |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $out: "<collection>" }
⚙️ Parâmetros
| coleção de destino | Nome da coleção na qual gravar. |
|---|
Retorno:Nenhum documento continua; os resultados são gravados na coleção de destino
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $out: exporta pedidos de 2024 para uma nova coleção
db.orders.aggregate([
{ $match: { year: 2024 } },
{ $out: 'orders_2024' }
])
Saída:
// orders_2024 é totalmente substituída
📌 Notas
- Deve ser o estágio final do pipeline
- A coleção de destino é totalmente substituída, não anexada
- Um bloqueio de nível de coleção durante a gravação pode bloquear operações concorrentes em conjuntos de dados grandes
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
Q$out sobrescreve uma coleção existente?
ASim, a coleção inteira é substituída; em caso de falha, o original é mantido.
QDevo usar $out ou $merge?
AUse $out para substituição completa; $merge para atualizações incrementais e mesclagem por chave.
Q$out pode gravar em outro banco de dados?
ADesde o MongoDB 4.4, escreva como 'otherdb.coll'.