$redact (Redigir)

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

$redact (Redigir)

$redact filtra em nível de campo usando metadados de permissão armazenados nos documentos, com as variáveis de sistema $$KEEP, $$PRUNE e $$DESCEND. $$DESCEND desce para documentos aninhados, $$PRUNE descarta o documento e sua subárvore, e $$KEEP o mantém. É filtragem no lado da consulta, não uma fronteira de segurança.

CategoriaAvançado e Diagnóstico
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $redact: { $cond: { if: { $eq: [ "$level", "userLevel" ] }, then: "$$PRUNE", else: "$$DESCEND" } } }

⚙️ Parâmetros

expressão de condiçãoExpressão avaliada em cada nível de aninhamento, produzindo $$KEEP, $$PRUNE ou $$DESCEND.

Retorno:Fluxo de documentos filtrado pelas regras de acesso

▶ Exemplo

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

// $redact: mantém apenas conteúdo público
db.employees.aggregate([
  { $redact: {
    $cond: { if: { $eq: ['$access', 'public'] }, then: '$$KEEP', else: '$$DESCEND' }
  } }
])

Saída:

// Documentos ou campos não públicos são removidos

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQuando $$DESCEND é usado?
AQuando o documento atual passa, mas documentos aninhados ainda precisam de verificação; adie a decisão para os níveis abaixo.
Q$redact pode substituir um sistema de controle de acesso?
AEle filtra no momento da consulta, mas não é uma fronteira de segurança; os clientes ainda podem consultar a coleção diretamente.
QComo $redact difere de $match?
A$match filtra documentos inteiros por condições de nível superior; $redact decide por nível de aninhamento recursivamente.
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%