$project (Projeção)

Última atualização: 2026-10-09

$project (Projeção)

$project é o estágio de projeção: ele seleciona ou exclui campos, ou calcula novos, mapeando cada documento para uma nova forma. Diferente de $addFields, ele produz por padrão apenas _id e os campos explicitamente listados: 1 inclui, 0 exclui, e uma expressão cria um novo campo. Use-o para encolher documentos, renomear campos ou achatar objetos embutidos. Inclusão e exclusão não podem ser misturadas (exceto _id).

CategoriaEstágios Principais
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $project: { <campo>: <1 ou 0 ou expressão>, ... } }

⚙️ Parâmetros

projeção de camposNomes de campo mapeados para 1 (incluir), 0 (excluir) ou uma expressão de agregação (campo calculado).

Retorno:Fluxo de documentos projetado

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// $project: mantém name, calcula total
db.orders.aggregate([
  { $project: { _id: 0, name: 1, total: { $multiply: ['$price', '$qty'] } } }
])

Saída:

// Cada doc agora tem apenas name e total
{ "name": "Pen", "total": 150 }
{ "name": "Book", "total": 30 }

📌 Notas

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQual é a diferença entre $project e $addFields?
A$addFields mantém todos os campos originais e adiciona novos; $project descarta campos não listados por padrão, usado para aparar ou reconstruir a forma do documento.
Q$project pode excluir vários campos de uma vez?
ASim, defina todos como 0, ex.: { $project: { secret: 0, log: 0 } }, o que mantém todos os outros campos.
Q$project muda a ordem dos campos?
AOs campos de saída seguem a ordem escrita na projeção, independentemente da ordem do documento original.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%